MongoDB
 sql >> база данни >  >> NoSQL >> MongoDB

Сортиране по дължина на масива

Използвайте рамката за агрегиране с помощта на $size оператор от MongoDB 2.6 и нагоре:

db.collection.aggregate([
    // Project with an array length
    { "$project": {
        "title": 1,
        "author": 1,
        "votes": 1,
        "length": { "$size": "$votes" }
    }},

    // Sort on the "length"
    { "$sort": { "length": -1 } },

    // Project if you really want
    { "$project": {
        "title": 1,
        "author": 1,
        "votes": 1,
    }}
])

Достатъчно просто.

Ако нямате налична версия 2.6, можете да направите това с малко повече работа:

db.collection.aggregate([
    // unwind the array
    { "$unwind": "$votes" },

    // Group back
    { "$group": {
        "_id": "$id",
        "title": { "$first": "$title" },
        "author": { "$first": "$author" },
        "votes": { "$push": "$votes" },
        "length": { "$sum": 1 }
    }},

    // Sort again
    { "$sort": { "length": -1 } },

    // Project if you want to
    { "$project": {
        "title": 1,
        "author": 1,
        "votes": 1,
    }}
])

Това е почти всичко.



  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Настройка на MongoDB с node.js:Грешка:неуспешно свързване към [localhost:27017]

  2. Как да извлека данни от MongoDB?

  3. Как мога да преодолея проблемите с мащабирането с без сървър и MongoDB?

  4. Java:Как да вмъкна hashmap в MongoDB?

  5. MongoDB текуща обща сума като агрегиране на предишни записи до появата на стойност