Mongoose获取包含特定元素的数组字段

时间:2018-04-03 08:04:03

标签: node.js mongoose

我目前正在1个集合中的mongodb mongoose中构建对象。 这是模拟数据:

>[
>   {_id: 1, name : "parent 1", parent: null},
>   {_id:2, name = "child", parent : [1]},
>   {_id:3, name = "grandchild", parent : [1,2]},
>   {_id:4, name = "greatgrandchild 1", parent : [1,2,3]}
>   {_id:5, name = "greatgrandchild 2", parent : [1,2,3]}
>]

所以我试图询问所有孩子"孩子"基于父ID的数组, 这是猫鼬方法:

Model.find({" parent":{$ elemMatch:{$ in:[1,2]}}}); 我的预期结果是:

[    
    {_id:3, name = "grandchild", parent : [1,2]},
    {_id:4, name = "greatgrandchild 1", parent : [1,2,3]}
    {_id:5, name = "greatgrandchild 2", parent : [1,2,3]}
]
而它给了我

[    
    {_id:2, name = "child", parent : [1]},
    {_id:3, name = "grandchild", parent : [1,2]},
    {_id:4, name = "greatgrandchild 1", parent : [1,2,3]}
    {_id:5, name = "greatgrandchild 2", parent : [1,2,3]}
]

请注意,其中包含ID为2的文档

我意识到了这个错误, 该方法相当于

select * from table where parent in(1,2)

有没有办法正确获取?

欢呼声

2 个答案:

答案 0 :(得分:0)

尝试使用$ all的方法,类似于$和:

bean

https://docs.mongodb.com/manual/reference/operator/query/all/

答案 1 :(得分:0)

我找到了答案,mongodb将跟踪子文档如此正常并且可以正常工作。

Model.find({$ and:[{“parent”:1},{“parent”:2}]});