下面什么是最好的查询? 我花了很多时间来解决这个问题,但没有受到欢迎。
(我最好添加一些内容以使其清晰。我可以使用嵌套查询'fieldA.fieldB.fieldC':1,但是在我的数据中有许多'中间'字段。因此,我不想列出所有这些,现在我想知道是否可以将通配符用作'fieldA。*。fieldC':1。)
数据:
{'name':'A', 'top': { 'middle_1': { 'bottom_1':'sdf', 'bottom_2':'1263'}, 'middle_2': {'bottom_1':'ttt', 'bottom_2':'6565'}}}
{'name':'B', 'top': { 'middle_1': { 'bottom_1':'ghh', 'bottom_2':'4448'}, 'middle_2': {'bottom_1':'gdg', 'bottom_2':'4535'}}}
{'name':'C', 'top': { 'middle_1': { 'bottom_1':'dfh', 'bottom_2':'7717'}, 'middle_2': {'bottom_1':'hewr', 'bottom_2':'2435'}}}
{'name':'D', 'top': { 'middle_1': { 'bottom_1':'tyr', 'bottom_2':'1211'}, 'middle_2': {'bottom_1':'oho', 'bottom_2':'4644'}}}
结果:
{'name':'A', 'top': { 'middle_1': { 'bottom_2':'1263'}, 'middle_2': {'bottom_2':'6565'}}}
{'name':'B', 'top': { 'middle_1': { 'bottom_2':'4448'}, 'middle_2': {'bottom_2':'4535'}}}
{'name':'C', 'top': { 'middle_1': { 'bottom_2':'7717'}, 'middle_2': {'bottom_2':'2435'}}}
{'name':'D', 'top': { 'middle_1': { 'bottom_2':'1211'}, 'middle_2': {'bottom_2':'4644'}}}
谢谢!
答案 0 :(得分:0)
排除项目find()
中不需要的内容
db.yourCollection.find({},
{
"top.middle_1.bottom_1": 0,
"top.middle_2.bottom_1": 0
})
如果要使用聚合,
db.yourCOllection.aggregate([
{
$project: {
"name": 1,
"top.middle_1.bottom_1": 1,
"top.middle_2.bottom_2": 1,
}
}
])
两者都是一样的。 0
排除,1
包括引用$project