Mongodb中的$elemMatch输出

Mongodb中的$elemMatch输出,mongodb,mongodb-query,Mongodb,Mongodb Query,我有一个包含一个元素的集合 mongos> db.products.findOne(); { "_id" : 1, "product_code" : "345678", "variations" : [ { "size" : "L", "price" : 1000 },

我有一个包含一个元素的集合

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”字段?有什么想法吗??这是一个bug还是我做错了什么?

这是因为在调用中提供参数时,需要指定所有需要的字段

因此,您需要向投影对象添加
product\u code

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

这是因为当您在调用中提供参数时,您需要指定所需的所有字段

因此,您需要向投影对象添加
product\u code

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

但是我在find调用中没有提供投影参数。。find({product_代码:“345678”},{“变体”:{$elemMatch:{size:“L”}})@用户641887你有;
find
调用中的第二个参数(带有$elemMatch变体的参数)是投影参数。但是我在find调用中没有提供投影参数。。find({product_代码:“345678”},{“变体”:{$elemMatch:{size:“L”}})@用户641887你有;
find
调用中的第二个参数(带有$elemMatch变体的参数)是projection参数。