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

Czy można zamienić dywidendę i dzielnik operatora zapytań $mod MongoDB?

Zwykły .find zapytanie z $mod operator nie będzie działał tutaj, ale nadal możesz to zrobić za pomocą struktury agregacji i $redact operator i $mod arytmetyczny operator agregacji.

Załóżmy, że w naszej kolekcji mamy następujące dokumenty:

{ "_id" : ObjectId("573f624b4c01ce47a183a632"), "a" : 4 },
{ "_id" : ObjectId("573f63494c01ce47a183a634"), "a" : 12 },
{ "_id" : ObjectId("573f63504c01ce47a183a635"), "a" : 6 },
{ "_id" : ObjectId("573f63504c01ce47a183a636"), "a" : 24 }

Następujące zapytanie zwraca wszystkie te dokumenty, w których 60 modulo wartość pola a równa się 0 .

db.collection.aggregate([
    { "$redact": { 
        "$cond": [ 
            { "$eq": [ {"$mod": [ 60, "$a" ] }, 0 ] }, 
            "$$KEEP", 
            "$$PRUNE"
        ]
    }}
])

co daje:

{ "_id" : ObjectId("573f624b4c01ce47a183a632"), "a" : 4 }
{ "_id" : ObjectId("573f63494c01ce47a183a634"), "a" : 12 }
{ "_id" : ObjectId("573f63504c01ce47a183a635"), "a" : 6 }

Innym prawdopodobnie mniej wydajnym sposobem na zrobienie tego jest użycie $where operatora.

db.collection.find("60 % this.a === 0")



  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Mongoose - zapytanie, aby uzyskać dane z wielu kolekcji

  2. Jak zaimplementować miękkie (logiczne) usuwanie za pomocą MongoDB i Spring?

  3. dostęp do asocjacji ember js backend nodejs mongoose

  4. Indeksy złożone Mongodb do filtrowania i sortowania w kolekcji BIG

  5. Jak wybrać najlepszy hosting MongoDB dla swojej firmy?