查询mongoose中的数组以及其他键

时间:2017-06-28 12:50:28

标签: mongoose

我有这样的文件:

    {
        "_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"
            }
        ]
    }

我想编写一个查询,在文档中查找nameanother_id,并在数组中搜索name的存在,比如说{{1} }和carbon

我写了一个像

这样的查询
iron

它没有取我上面的文件。我究竟做错了什么?我真的在寻找一个查询对象。

1 个答案:

答案 0 :(得分:1)

目前,您的查询会查找名称为" Great Name"和一个值为" carbon"和"铁"在数组中。这不是你想要的 - 你想找到" carbon"和"铁"是" name"的值在该数组的子文档中。这应该有所帮助:

Schema.find({
    name:"Great Name",
    arraything: { $and: [
        {$elemMatch: {name: 'carbon'}}, 
        {$elemMatch: {name: 'iron'}}
    ]}
})