按对象数组查找文档

时间:2017-07-25 22:17:06

标签: node.js mongodb mongoose

我想在MongoDB中创建一个查询来查找文件和数组文件属性的对象数组。

我有文件:

{meta: {prop1: "hi1", prop2: "ho1"}},
{meta: {prop1: "hi2", prop2: "ho2"}},
{meta: {prop1: "hi3", prop2: "ho3"}},
{meta: {prop1: "hi1", prop2: "ho2"}}

我想找到meta属性是此数组中确切对象之一的文档:

[
  {prop1: "hi1", prop2: "ho1"}, {prop1: "hi2", prop2: "ho2"}
]

期望的结果将是文件:

{meta: {prop1: "hi1", prop2: "ho1"}},
{meta: {prop1: "hi2", prop2: "ho2"}}

但不是:

{meta: {prop1: "hi1", prop2: "ho1"}},
{meta: {prop1: "hi2", prop2: "ho2"}},
{meta: {prop1: "hi1", prop2: "ho2"}}

2 个答案:

答案 0 :(得分:1)

使用$in运算符。

Collection.find({
    meta:  { 
        $in: [
            { prop1: 'hi1', prop2: 'ho1'}, 
            { prop1: 'hi2', prop2: 'ho2'}
        ]
    } 
})

答案 1 :(得分:0)

我们可以使用$or -

Collection.find({
        $or: [
            {'meta.prop1': 'hi1', 'meta.prop2': 'ho1'},
            { 'meta.prop1': 'hi2', 'meta.prop2': 'ho2'}
        ]
})

注意:内部对象$或,$和条件是构建。

我们也可以使用$in,因为 $ in是使用$或构建的。