sql >> Database >  >> NoSQL >> MongoDB

Sorteer geneste reeks objecten

Ik zou het bewaren in de volgorde waarin je het terug wilt hebben. Of sorteer het nadat je het eruit hebt gehaald, aan de kant van de klant.

Als geen van beide mogelijk is, kunt u het aggregatieraamwerk gebruiken:

> db.test.insert({answers: [
...                 {name: 'paul', state: 'RU'},
...                 {name: 'steve', state: 'US'}, 
...                 {name: 'mike', state: 'DE'}]});
> db.test.insert({answers: [
...                 {name: 'paul', state: 'RU'},
...                 {name: 'steve', state: 'US'}, 
...                 {name: 'xavier', state: 'TX'}]});

db.test.aggregate([
  {$unwind: "$answers"}, 
  {$sort: {"answers.name":1}}, 
  {$group: {_id:"$_id", answers: {$push:"$answers"}}}
]);

produceert:

{
  "result" : [
  {
    "_id" : ObjectId("5053b2477d820880c3469364"),
    "answers" : [
      {
        "name" : "paul",
        "state" : "RU"
      },
      {
        "name" : "steve",
        "state" : "US"
      },
      {
        "name" : "xavier",
        "state" : "TX"
      }
    ]
  },
  {
    "_id" : ObjectId("5053af9f7d820880c3469363"),
    "answers" : [
      {
        "name" : "mike",
        "state" : "DE"
      },
      {
        "name" : "paul",
        "state" : "RU"
      },
      {
        "name" : "steve",
        "state" : "US"
      }
    ]
  }
],
  "ok" : 1
}


  1. Waarom verlopen Redis-sleutels niet?

  2. hibernate tweede niveau cache met Redis - zal het de prestaties verbeteren?

  3. Wanneer naar Redis? Wanneer naar MongoDB?

  4. Hoe de prestaties van ClusterControl en zijn componenten te optimaliseren