Mongodb 如何从数组中检索子文档字段值

Mongodb 如何从数组中检索子文档字段值,mongodb,mongodb-query,aggregation-framework,Mongodb,Mongodb Query,Aggregation Framework,如何从mongodb中的以下文档中获取购物车中的每个productID { "_id": ObjectId("572992d6fc8b7a5c613248f6"), "userId": "0001", "fname": "Ankur", "lname": "Vishnoi", "address1": "Palam", "city": "New Delhi", "state": "Delhi", "pin": 110077,

如何从mongodb中的以下文档中获取购物车中的每个productID

{
    "_id": ObjectId("572992d6fc8b7a5c613248f6"),
    "userId": "0001",
    "fname": "Ankur",
    "lname": "Vishnoi",
    "address1": "Palam",
    "city": "New Delhi",
    "state": "Delhi",
    "pin": 110077,
    "cart": [
        {
            "productId": 8,
            "cartQty": 1
        }, 
        {
            "productId": 2,
            "cartQty": 3
        },
   ]
} 

您可以使用Mongo聚合函数$unwind数组元素。然后应用$project来获取productId

db.coll.aggregate([
    {$unwind : "$cart"},
    {$project : { _id : 0, "productId" : "$cart.productId"}}
])
结果:

{ "productId" : 8 }
{ "productId" : 2 }

除非必须,否则应使用管道操作符对文档进行非标准化。最好的方法是使用操作符

db.carts.aggregate([
{“$project”:{
“产品ID”:{
“$map”:{
“输入”:“$cart”,
“as”:“crt”,
“在”:“$$crt.productId”
} 
} 
}} 
])