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

Как да върна само първото появяване на ID с Mongoose?

Можем да използваме рамката за агрегиране, за да направим това. Първо трябва да $sort от user и "_id". Оттам след това $group от "потребител" и използвайте $last акумулаторен оператор за връщане на последния документ за всеки потребител. Обърнете внимание, че можем също да използваме $first оператор на акумулатор, ако сортираме документите си в низходящ ред, но сортираме във възходящ ред и използваме $last изясним намерението си.

db.collection.aggregate([
    { "$sort": { "user": 1, "_id": -1 } }, 
    { "$group": { 
        "_id": "$user", 
        "user": { "$last": "$$ROOT" } 
    }} 
])

което произвежда:

{
    "_id" : "fje93jrg4",
    "user" : {
        "_id" : 2,
        "user" : "fje93jrg4",
        "event" : null,
        "group" : null,
        "name" : "Bob",
        "text" : "Testing"
    }
}
{
    "_id" : "94fg844f",
    "user" : {
        "_id" : 1,
        "user" : "94fg844f",
        "event" : null,
        "group" : null,
        "name" : "Jake",
        "text" : "Hello world"
    }
}
{
    "_id" : null,
    "user" : {
        "_id" : 4,
        "user" : null,
        "event" : "d0j3n9fn3",
        "group" : null,
        "name" : "My Event",
        "text" : "Testing 2"
    }
}

Може да искаме да добавим $project към нашия тръбопровод, но това ще доведе до спад в производителността. Това обаче ще намали както количеството данни, изпратени по кабела, така и времето и паметта, използвани за декодиране на документи от страна на клиента, ако не са необходими всички двойки ключ/стойност във върнат документ.

$project сцена изглежда така:

{ "$project": {
    "_id": "$user._id",
    "user": "$user.user",
    "event": "$user.event",
    "group": "$user.group",
    "name": "$user.name",
    "text": "$user.text"
}}


  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. MongoDB - интерпретирайте конкретен обяснен изход

  2. Вмъкване и връщане на ID на поддокумент в масива на поддокумент на MongoDB документ

  3. Как да заявите BsonExtraElements в MongoDB чрез Linq

  4. командата mongorestore заменя съществуващите записи?

  5. Mongoose &Express:Как правилно да премахвате, създавате и съхранявате референтни данни