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

Wybierz dokument mający określoną parę klucz-wartość, ale nie mający innej pary klucz-wartość

Twoja próba zapytania używa tego samego „klucza” dwa razy. Nie możesz tego zrobić w strukturze obiektu, ponieważ zasadniczo „nadpisujesz” wartość tego samego klucza. Tak więc rozważane zapytanie jest tylko „drugim” warunkiem dla tego klucza.

Jeśli więc chcesz mieć wiele warunków dla tego samego klucza, użyj $and operator:

db.collection.aggregate([
    { "$match": {
        "$and": [
            { "genericParams.key": { "$exists": true, "$ne": "manual_funds_processed" } },
            { "genericParams.key": "third_sms_email_time" }
        ] 
    },
    // other stages
})

Lub ponieważ wszystkie warunki MongoDB są domyślnie argumentami „i”, możesz również określić $eq w tym przypadku:

db.collection.aggregate([
    { "$match": {
        "genericParams.key": { 
            "$ne": "manual_refund_processed", 
            "$eq": "third_sms_email_time"
        }
    }},
    // other stages
])

Zauważając, że nie ma nic szczególnego w .aggregate() tutaj sam, ponieważ jest to tylko podstawowa część "zapytania", która wykonuje pracę wyboru dokumentu.

Zauważ również, że z obecnym warunkiem "dodatnim" ( $eq ) nie jest konieczne używanie $exists ponieważ już testujesz, że przynajmniej ten element musi pasować.




  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Kursor agregacji Mongo i liczenie

  2. Sortowanie MongoDB na dzieci

  3. Mongodb PHP - liczby całkowite z ułamkami dziesiętnymi

  4. Mongoose i nowy schemat:zwraca ReferenceError:Schemat nie jest zdefiniowany

  5. Jak usunąć osadzony dokument schematu w manguście?