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

Вземете документи с вложени обекти, съответстващи на условието за преброяване

Можете да използвате рамката за агрегиране да го направя. Вие не се нуждаете за да използвате $where оператор.

db.collection.aggregate([
    { "$match": { "cats.color": "white" }},
    { "$project": { 
        "nwhite": { "$map": { 
            "input": "$cats", 
            "as": "c",
            "in": { "$cond": [
                { "$eq": [ "$$c.color", "white" ] },
                1, 
                0
            ]}
        }}, 
        "cats": 1
     }},
     { "$unwind": "$nwhite" }, 
     { "$group": { 
         "_id": "$_id", 
         "cats": { "$first": "$cats" }, 
         "nwhite": { "$sum": "$nwhite" }
     }},
    { "$match": { "nwhite": { "$gte" :2 } } } 
])


  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Как да конвертирате полето на определена колона на dtype обект в колона на рамка с данни в pandas

  2. psycopg2 се проваля при изпълнение на много израз със синтактична грешка

  3. Mongo DB ISO формат

  4. MongoDB Aggregation:Как да получите общия брой записи?

  5. Обектът на документа на MongoEngine, направен с помощта на from_json, не се запазва