2017-07-25 77 views
1

我想在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"}} 

回答

1

使用$in運算符。

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

我們可以爲此使用$or -

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

注意:裏面的$對象或$和條件建設。

我們也可以使用$in也因爲$ in內置使用$或