sql >> Database >  >> NoSQL >> MongoDB

Controleer op het bestaan ​​van meerdere velden in het MongoDB-document

Ik weet niet hoe het beter is, maar je kunt altijd met JavaScript verwerken via $where :

jsStr = """var doc = this;
           return ['result1','result2','result3']
           .every(function(key) { 
               return doc.hasOwnProperty(key) 
           });"""

coll.find({ "$where": jsStr })

Maar je zult een reeks "sleutels" moeten specificeren om ergens naar te zoeken.

Als u denkt dat u veel sleutels moet typen, waarom "bouwt" u dan niet gewoon uw zoekexpressie:

whitelist = [ "result1", "result2", "result3" ]
query = {}

for key in whitelist:
    query[key] = { "$exists": True }

coll.find(query)

Dat scheelt een beetje typen en aangezien alle MongoDB-query's toch maar gegevensstructuren zijn, is het logisch om basisgegevensmanipulatie te gebruiken om query's te bouwen.



  1. Als Redis single Threaded is, hoe kan het dan zo snel zijn?

  2. Kan allowDiskUse:True niet krijgen om met pymongo te werken

  3. MongoDB installeren op CentOS 7

  4. Hoe kan ik met MongoDB een subdocument van een subarray bijwerken wanneer de elementpositie onbekend is?