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

Mongodb агрегиращ тръбопровод как да ограничите групово натискане

Да предположим, че координатите в долния ляв и горния десен ъгъл са съответно [0, 0] и [100, 100] . От MongoDB 3.2 можете да използвате $slice оператор, за да върне подмножество от масив, което е това, което искате.

db.collection.aggregate([
    { "$match": { 
        "loc": { 
            "$geoWithin":  { 
                "$box": [ 
                    [0, 0], 
                    [100, 100]
                ]
            }
        }}
    }},
    { "$group": { 
        "_id": "$name",
        "submitted": { "$max": "$submitted" }, 
        "preview": { "$first": "$preview" }
        "locs": { "$push": "$loc" }
    }}, 
    { "$project": { 
        "locs": { "$slice": [ "$locs", 5 ] },
        "preview": 1,
        "submitted": 1
    }},
    { "$limit": 10 }
])


  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Сървърът на MongoDB все още може да бъде достъпен без идентификационни данни

  2. Получаване на всички имена на полета в колекция mongodb?

  3. Mongoose поддържа ли метода на Mongodb `findAndModify`?

  4. runCommand еквивалент за nodejs-native-mongodb

  5. MongoDB:агрегирано поле за добавяне на $project със статична стойност