我有一个带有一个元素的集合
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”字段?有任何想法吗 ??这是一个错误还是我做错了什么?
答案 0 :(得分:3)
这是因为当您在projection电话中提供find
参数时,您需要指定所需的所有字段。
因此,您需要将product_code
添加到投影对象:
db.test.find({ product_code: "345678"},
{ product_code: 1,
variations: { $elemMatch: { size: "L" } } } )