2017-06-28 101 views
1

我的文件呈沿着陣列:查詢在貓鼬與其他鍵

{ 
     "_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,比如carboniron

我寫了一個查詢像

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

它沒有給我拿把上面的文件。我究竟做錯了什麼?我真的在尋找一個單一的查詢對象。

回答

1

當前您的查詢查找名爲值「Great Name」的文檔以及數組中值爲「carbon」和「iron」的arraything屬性。這不是您想要的 - 您想要找到「碳」和「鐵」是該數組中子文檔中「名稱」的值。這應該有所幫助:

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