MongoDB
 sql >> Cơ Sở Dữ Liệu >  >> NoSQL >> MongoDB

Nhận tài liệu với các đối tượng lồng nhau phù hợp với điều kiện đếm

Bạn có thể sử dụng khuôn khổ tổng hợp để làm điều này. Bạn không cần để sử dụng $where nhà điều hành.

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. MongoDB:sự khác biệt giữa $ elemMatch và $ và để tìm các đối tượng bên trong mảng là gì?

  2. mongodb chậm hơn 4 lần so với sqlite, 2 lần chậm hơn so với csv?

  3. Mongodb 4+ findOneAndUpdate () returnNewDocument không hoạt động

  4. Tìm sự khác biệt với các bộ sưu tập trong mongodb

  5. Cắt dấu ngoặc kép trong json nhận được từ mongoDB