2016-11-07 79 views
2

目的

我有一個配方文件,其中包含成分(也是文件)的數組。我希望獲得包含某種成分的所有食譜。如何獲取包含數組中另一個文檔的所有文檔?

背景

可以說我有一個配方文件,如下所示:

{ 
     name: "Red Velvet Cake", 
     ingredients: [{ 
      name: "roasted beet", 
      amount: { 
       quantity: 0.5, 
       metric: metrics[0] 
      } 
     }, { 
      name: "orange", 
      amount: { 
       quantity: 0.25, 
       metric: metrics[0] 
      } 
     }], 
     preparation: "Mix everything and have fun!", 
     Source: "Super Smoothies, p. 142" 
    } 

現在,可以說我有很多的食譜集合,我希望有「蘿蔔各食譜「作爲一種成分。

我試過

爲了實現這個我想下面的使用MongoDB的控制檯:

db.smoothies.find({ ingredients: {name: "orange"}}) 

但是,這是行不通的。

我像Find document with array that contains a specific value其他問題看,有些人使用的關鍵字,例如$all$in$exists,但我不確定如何將這些能幫助我。

問題

如何讓我的查詢工作?

+1

使用[點號](https://docs.mongodb.com/manual/core/document/#dot-notation)查詢數組'的元素db.smoothies.find({「ingredients.name」:「orange」})'或['elemMatch'](https://docs.mongodb.com/v3.2/reference/operator/query/elemMatch/# ({「ingredients」:{「$ elemMatch」:{「name」:「orange」}}})' – chridam

回答

2

寫您的查詢是這樣的:

db.smoothies.find({ "ingredients.name": "orange"}) 
-1

不知道MongoDB的,但是這是我怎麼會與香草的JavaScript做到這一點:如果需要

var recipes = [{ 
 
    name: "Red Velvet Cake - No Orange", 
 
    ingredients: [{ 
 
    name: "roasted beet" 
 
    }] 
 
}, { 
 
    name: "Red Velvet Cake", 
 
    ingredients: [{ 
 
    name: "roasted beet" 
 
    }, { 
 
    name: "orange" 
 
    }] 
 
}] 
 

 
console.log(recipes 
 
    .find(function(a) { 
 
    return a.ingredients.some(function(b) { 
 
     return b.name == "orange" 
 
    }); 
 
    }))

Polyfills:

https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/find#Polyfill

https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/some#Polyfill

+0

當答案中的一半代碼是polyfills ,其餘80%的代碼是OP的數據,您可能需要重新考慮如何構建答案。換句話說,不要包含polyfills(___Especially__不在'代碼段的HTML字段中的'

  • 11. 選擇數組中所有值存在於另一個數組中的文檔
  • 12. 查找包含objectIds數組的文檔
  • 13. 從doctrinemongodb文檔獲取所有參數
  • 14. 的MongoDB插入每一個文檔的文檔中包含像這樣的一些文件另一個集合
  • 15. RethinkDB:​​獲取任何字段中包含字符串的所有文檔
  • 16. Mongo DB:獲取最後一個已知文檔後插入的所有文檔
  • 17. 如何獲取文檔片段中的所有文本節點?
  • 18. 包括HTML文檔的渲染到另一個HTML文檔
  • 19. 檢索具有包含其他文檔屬性的數組的文檔
  • 20. 貓鼬 - 查詢獲取文檔的所有子文檔
  • 21. 獲取包含所有故事的整個word文檔的範圍
  • 22. 如何在Sphinx globaltoc側邊欄中包含所有文檔?
  • 23. 將文檔插入另一個文檔
  • 24. 如何從一個文檔文件夾獲取文件到另一個文檔文件夾?
  • 25. 獲取特定文檔的下一個和前一個文檔
  • 26. 在MongoDB中查找包含不包含具有特定字段值的文檔的數組的文檔
  • 27. 如何從所有文檔中僅返回數組的嵌套文檔
  • 28. 如何選擇不包含在給定數組中的文檔?
  • 29. 如何使用c#從數據桶中獲取所有文檔?
  • 30. 獲取一個類別的文檔數