我在“testProjection”集合中插入了以下数据。
{
"eventname" : "Ball Passed",
"command" : {
"name" : "Run",
"strike" : 15,
"score" : true,
"duration" : 123
}
},
{
"eventname" : "Ball Passed",
"command" : {
"name" : "Run",
"strike" : 12,
"score" : false,
"duration" : 597
}
}
我的查询是:
db.testProjection.find({},{"command":0,"command.score":0})
{
"_id" : ObjectId("599d27944be6e513549dd170"),
"eventname" : "Ball Passed",
"command" : {
"name" : "Run",
"strike" : 15.0,
"duration" : 123.0
}
},
{
"_id" : ObjectId("599d27944be6e513549dd171"),
"eventname" : "Ball Passed",
"command" : {
"name" : "Run",
"strike" : 12.0,
"duration" : 597.0
}
}
{
"_id" : ObjectId("599d27944be6e513549dd170"),
"eventname" : "Ball Passed"
},
{
"_id" : ObjectId("599d27944be6e513549dd171"),
"eventname" : "Ball Passed"
}
在mongodb投影中,Mongodb中的查询引擎更喜欢嵌套的低级投影而不是顶级投影。
这是mongodb中的理想行为吗?有没有办法用mongodb查询实现我的预期?
答案 0 :(得分:1)
有没有办法实现我使用MongoDb查询的预期?
您可以包含您期望的字段,而不是排除字段,如:
db.testProjection.find(
{},
{
_id: 1,
eventname: 1
}
);
但我认为最好使用这样的聚合 - 作为性能问题 - :
db.testProjection.aggregate(
[
{
$project: {
_id : 1,
eventname: 1
}
},
]
);