我目前正在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)
有没有办法正确获取?
欢呼声
答案 0 :(得分:0)
答案 1 :(得分:0)
我找到了答案,mongodb将跟踪子文档如此正常并且可以正常工作。
Model.find({$ and:[{“parent”:1},{“parent”:2}]});