MongoDB
 sql >> Baza danych >  >> NoSQL >> MongoDB

Jak zwrócić tylko pierwsze wystąpienie identyfikatora z Mongoose?

W tym celu możemy użyć struktury agregacji. Najpierw musimy $sort przez user i „_id”. Następnie $group przez „użytkownika” i użyj $last operator akumulatora, aby zwrócić ostatni dokument dla każdego użytkownika. Pamiętaj, że możemy również użyć $first operator akumulatora, jeśli sortujemy nasze dokumenty w kolejności malejącej, ale sortujemy w kolejności rosnącej i używamy $last wyjaśnij naszą intencję.

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

co daje:

{
    "_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"
    }
}

Możemy chcieć dodać $project do naszego potoku, ale spowoduje to spadek wydajności. Jednak zmniejszy to zarówno ilość danych przesyłanych przez sieć, jak i czas i pamięć używaną do dekodowania dokumentów po stronie klienta, jeśli nie są potrzebne wszystkie pary klucz/wartość w zwróconym dokumencie.

$project scena wygląda tak:

{ "$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. Jak zaktualizować pola dokumentów w mongo db za pomocą sterownika java?

  2. MongoDB GridFS - Czy to nazwa pliku czy nazwa pliku?

  3. Transakcje Mongoose.js

  4. Mongoose konwertuje zapisane daty UTC na czas lokalny?

  5. Czy muszę wyraźnie zamknąć połączenie?