我有这样的文件:
{
"_id": "594a78e2fc9d19454bae54fe",
"name": "Great Name",
"another_id": 15854,
"__v": 0,
"arraything": [
{
"name": "cadmium",
"id": 14,
"_id": "59520442c65c73249e67fc66"
},
{
"name": "carbon",
"id": 1,
"_id": "59520442c65c73249e67fc65"
},
{
"name": "iron",
"id": 2,
"_id": "59520442c65c73249e67fc64"
}
],
"anotherarray": [
{
"name": "rock",
"id": 3,
"_id": "59520442c65c73249e67fc69"
},
{
"name": "metal",
"id": 2,
"_id": "59520442c65c73249e67fc68"
}
]
}
我想编写一个查询,在文档中查找name
和another_id
,并在数组中搜索name
的存在,比如说{{1} }和carbon
。
我写了一个像
这样的查询iron
它没有取我上面的文件。我究竟做错了什么?我真的在寻找一个查询对象。
答案 0 :(得分:1)
目前,您的查询会查找名称为" Great Name"和一个值为" carbon"和"铁"在数组中。这不是你想要的 - 你想找到" carbon"和"铁"是" name"的值在该数组的子文档中。这应该有所帮助:
Schema.find({
name:"Great Name",
arraything: { $and: [
{$elemMatch: {name: 'carbon'}},
{$elemMatch: {name: 'iron'}}
]}
})