sql >> Databasteknik >  >> NoSQL >> MongoDB

Hur lagrar man sorterad array tillbaka till MongoDB?

2.4-versionen av MongoDB ger ett annat alternativ här, vilket är att hålla arrayfältet i sorterad ordning när du uppdaterar det genom att använda $sort modifierare.

db.collection.update({_id: document_id}, {
    $push: {
        myarray: {
            $each: [{timestamp: 456, x: 1}, {timestamp: 123, x: 2}, ...],
            $sort: {timestamp: 1}
        }
    }
});

Detta kommer att resultera i elementen i myarray fältet i det uppdaterade dokumentet som ska lagras sorterat efter stigande timestamp .

Om du bara vill sortera de befintliga elementen på plats utan att lägga till några nya, använd $each: [] :

db.collection.update({_id: document_id}, {
    $push: {
        myarray: {
            $each: [],
            $sort: {timestamp: 1}
        }
    }
});


  1. Redis kö med anspråk löper ut

  2. Mongoose findByIdAndUpdate returnerar inte korrekt modell

  3. Spring Data Mongo Query för att fråga med flera fält och returnera i ett samtal

  4. Mongodb array $push och $pull