我将如何编写查询以仅获取与卡尔有关的信息?
{
"t" : 0,
"member" : [
{ "name": "Carl",
"ad":
{
"firstline" : 123,
"secondline": 456
}
},
{ "name": "John",
"ad":
{
"firstline" : 345,
"secondline": 1256
}
}
]
}
{
"t" : 1,
"member" : [
{ "name": "Carl",
"ad":
{
"firstline" : 1323,
"secondline": 4536
}
},
{ "name": "John",
"ad":
{
"firstline" : 3245,
"secondline": 123456
}
}
]
}
所需的输出:
{
"t" : 0,
"member" : [
{ "name": "Carl",
"ad":
{
"firstline" : 123,
"secondline": 456
}
}
]
}
{
"t" : 1,
"member" : [
{ "name": "Carl",
"ad":
{
"firstline" : 1323,
"secondline": 4536
}
}
]
}
我尝试过的事情:
db.people.find("member.name" :"Carl")
但是它没有输出所需的信息,并且当t更大时,数据不是按时间顺序排列的。而且,当将数据导出到新的JSON文件时,信息会丢失其结构,这意味着条目之间没有换行符。知道如何解决这个问题吗?
答案 0 :(得分:1)
您可以将find()
方法的投影部分使用$elemMatch (projection)运算符来指定数组过滤条件:
db.people.find({ "member.name": "Carl" }, { member: { $elemMatch: { name: "Carl" } }, t: 1 })