簡體   English   中英

MongoDB查詢到數組

[英]MongoDB Query to array

我有一個收集命令,集合內有屬性Array,我想將attributes.value上的記錄分組,其中attributes.name是“ sugery”

db.orders.find({},{"attributes":1}).sort({_id:-1}).limit(3);
{ 
    "_id" : ObjectId("599cfdb0f6ec8d00015b0880"), 
    "attributes" : [
        {
            "id" : ObjectId("5979a220ad86210001997d5a"), 
            "name" : "patient", 
            "status" : NumberInt(1), 
            "sysDefined" : NumberInt(1), 
            "value" : "Lincon Burrows"
        }, 
        {
            "id" : ObjectId("5979a229ad86210001997d5c"), 
            "name" : "notes", 
            "status" : NumberInt(1), 
            "sysDefined" : NumberInt(1), 
            "value" : ""
        }, 
        {
            "id" : ObjectId("5979a230ad86210001997d5e"), 
            "name" : "surgeon", 
            "status" : NumberInt(1), 
            "sysDefined" : NumberInt(1), 
            "value" : "Dr. Williams"
        }, 
        {
            "id" : ObjectId("5979a238ad86210001997d60"), 
            "name" : "surgery", 
            "status" : NumberInt(1), 
            "sysDefined" : NumberInt(1), 
            "value" : "Heart Surgery"
        }
    ]
}
{ 
    "_id" : ObjectId("599c357a9ec26c00017892a6"), 
    "attributes" : [
        {
            "value" : "new patient", 
            "sysDefined" : NumberInt(1), 
            "status" : NumberInt(1), 
            "name" : "patient", 
            "id" : ObjectId("5979a220ad86210001997d5a")
        }, 
        {
            "value" : "", 
            "sysDefined" : NumberInt(1), 
            "status" : NumberInt(1), 
            "name" : "notes", 
            "id" : ObjectId("5979a229ad86210001997d5c")
        }, 
        {
            "value" : "http://localhost:4200/#new surgeon", 
            "sysDefined" : NumberInt(1), 
            "status" : NumberInt(1), 
            "name" : "surgeon", 
            "id" : ObjectId("5979a230ad86210001997d5e")
        }, 
        {
            "value" : "new surgery", 
            "sysDefined" : NumberInt(1), 
            "status" : NumberInt(1), 
            "name" : "surgery", 
            "id" : ObjectId("5979a238ad86210001997d60")
        }
    ]
}
{ 
    "_id" : ObjectId("599c2069b2afd900019ea142"), 
    "attributes" : [
        {
            "value" : "Mellisa Darwin", 
            "sysDefined" : NumberInt(1), 
            "status" : NumberInt(1), 
            "name" : "patient", 
            "id" : ObjectId("5979a220ad86210001997d5a")
        }, 
        {
            "value" : "", 
            "sysDefined" : NumberInt(1), 
            "status" : NumberInt(1), 
            "name" : "notes", 
            "id" : ObjectId("5979a229ad86210001997d5c")
        }, 
        {
            "value" : "Dr. Josefina P. Robles", 
            "sysDefined" : NumberInt(1), 
            "status" : NumberInt(1), 
            "name" : "surgeon", 
            "id" : ObjectId("5979a230ad86210001997d5e")
        }, 
        {
            "value" : "Spine Surgery", 
            "sysDefined" : NumberInt(1), 
            "status" : NumberInt(1), 
            "name" : "surgery", 
            "id" : ObjectId("5979a238ad86210001997d60")
        }
    ]
}

我想要輸出像

[  
   {  
      "_id":"Heart Surgery",
      "count":1
   },
   {  
      "_id":"new surgery",
      "count":1
   },
   {  
      "_id":"Spine Surgery",
      "count":1
   }
]

請參閱mongodb組文檔。 db.collection.group()

以下是db.collection.group()方法的示例。 這些示例假定訂單集合包含以下原型的文檔:

{
  _id: ObjectId("5085a95c8fada716c89d0021"),
  ord_dt: ISODate("2012-07-01T04:00:00Z"),
  ship_dt: ISODate("2012-07-02T04:00:00Z"),
  item: {
       sku: "abc123",
       price: 1.99,
       uom: "pcs",
       qty: 25
  }
}

按兩個字段分組

以下示例按ord_dtitem.sku字段對ord_dt大於01/01/2012的那些文檔進行分組

db.runCommand({
 group:
   {
     ns: 'orders',
     key: { ord_dt: 1, 'item.sku': 1 },
     cond: { ord_dt: { $gt: new Date( '01/01/2012' ) } },
     $reduce: function ( curr, result ) { },
     initial: { }
   }
})

嘗試這個 :

orders.aggregate({"attributes":1}, {$unwind:"$attributes"},{$match:{"attributes.name":"surgery"}})

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM