Mongodb中的$ elemMatch输出

时间:2016-08-16 03:39:26

标签: mongodb mongodb-query

我有一个带有一个元素的集合

mongos> db.products.findOne();
{
        "_id" : 1,
        "product_code" : "345678",
        "variations" : [
                {
                        "size" : "L",
                        "price" : 1000
                },
                {
                        "size" : "M",
                        "price" : 800
                }
        ]
}

现在当我在下面进行$ elemMatch查询时

db.products.find( {product_code: "345678"}, { "variations": { $elemMatch: { size: "L" } } } );

我得到如下输出

{ "_id" : 1, "variations" : [ { "size" : "L", "price" : 1000 } ] }

我的问题是为什么$ elemMatch查询的输出中没有显示值为345678的“product_code”字段?有任何想法吗 ??这是一个错误还是我做错了什么?

1 个答案:

答案 0 :(得分:3)

这是因为当您在projection电话中提供find参数时,您需要指定所需的所有字段。

因此,您需要将product_code添加到投影对象:

db.test.find({ product_code: "345678"}, 
             { product_code: 1, 
               variations: { $elemMatch: { size: "L" } } } )