我的问题是:我的结构类似于:
{
id: 1,
participants: [
{ name: "joe", status: 0 },
{ name: "james", status: 2}
],
content: "mongomongo"
}
{
id: 2,
participants: [
{ name: "joe", status: 1 },
{ name: "jordan", status: 3}
],
content: "dongodongo"
}
我想要做的是运行一个与此几乎相同的查询:
db.find({ '_id': { $in: someArray}}, { participants: {$elemMatch: {'name': someName }}}
Run Code Online (Sandbox Code Playgroud)
我会为$ in指定一个对象ID数组,然后我会提供一个用户名.会发生什么是它会给我两个对象,但参与者数组只有$ elemMatch找到的条目:
{
id: 1,
participants: [
{ name: "joe", status: 0 }
]
}
{
id: 2,
participants: [
{ name: "joe", status: 1 }
]
}
这就是我想要的,但我不想要的部分是它遗漏了其他领域(即content).如何调整查询,使其仍然返回参与者数组中的一个字段,还返回其他字段,如内容?
先感谢您!
实际上找到了我的问题的解决方案.只需要调整我使用的原始查询.因为我使用Mongoose来管理mongodb交互,所以我混淆了投影字段和选项字段.
这是有效的查询:
db.find({ '_id': { $in: someArray}}, { participants: {$elemMatch: {'name': someName }}, content: 1, [anything] : 1});
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1342 次 |
| 最近记录: |