[英]How to fetch data from array in mongodb
我下面有mongoDB收集數據。 我試圖使用typesOfExicution,companyName和projectName來獲取數據。 我寫了以下查詢以查找
db.getCollection('SETTINGS').find({'companyName':'VV', 'typesOfExicution' : 'validation', 'automation.projectName' : 'hdh'})
如果我不使用automation.projectName
我可以找到數據。 但是,如果我使用它,那么它將返回0條記錄。
那么從數組中查找數據的確切查詢是什么。
/* 1 */
{
"_id" : ObjectId("5abce315cabca22270eead6a"),
"typesOfExicution" : "validation",
"modesOfExicution" : "auto",
"automation[0][projectName]" : "Second",
"automation[0][modules][]" : "Second module",
"automation[0][assets][]" : "Second assets",
"companyName" : "VV"
}
/* 2 */
{
"_id" : ObjectId("5abce31ccabca22270eead6b"),
"typesOfExicution" : "validation",
"modesOfExicution" : "auto",
"automation[0][projectName]" : "Second",
"automation[0][modules][]" : "Second module",
"automation[0][assets][]" : "Second assets",
"companyName" : "VV"
}
/* 3 */
{
"_id" : ObjectId("5abce321cabca22270eead6c"),
"typesOfExicution" : "validation",
"modesOfExicution" : "auto",
"automation[0][projectName]" : "hdh",
"automation[0][modules][]" : "ds",
"automation[0][assets][]" : "djv",
"companyName" : "VV"
}
這不是您應該在MongoDB中存儲數組的方式。 您應該將數組元素存儲為嵌入式文檔。 正如@Alexis在這里提到的,您的數據庫集合結構到底是什么不清楚,所以我希望這是您給定輸入所期望的:
/* 1 */
{
"_id" : ObjectId("5abce315cabca22270eead6a"),
"typesOfExicution" : "validation",
"modesOfExicution" : "auto",
"automation" : [
{
"projectName" : "Second",
"modules" : [
"Second module"
],
"assets" : [
"Second assets"
]
}
],
"companyName" : "VV"
}
/* 2 */
{
"_id" : ObjectId("5abce31ccabca22270eead6b"),
"typesOfExicution" : "validation",
"modesOfExicution" : "auto",
"automation" : [
{
"projectName" : "Second",
"modules" : [
"Second module"
],
"assets" : [
"Second assets"
]
}
],
"companyName" : "VV"
}
/* 3 */
{
"_id" : ObjectId("5abce321cabca22270eead6c"),
"typesOfExicution" : "validation",
"modesOfExicution" : "auto",
"automation" : [
{
"projectName" : "hdh",
"modules" : [
"ds"
],
"assets" : [
"djv"
]
}
],
"companyName" : "VV"
}
獲得上述數據后,請使用automation.projectName
,您應獲得如下結果:
我不太確定您存儲的文檔的結構。 我相信它看起來像:
{
"typesOfExicution": string,
"modesOfExicution": string,
"automation": [{ projectName: string, modules: string, assets: string }]
"companyName" : string
}
如果要對屬於組成數組automation
對象的projectName
執行查詢,則需要使用$elemMatch
運算符:
db.getCollection('SETTINGS').find({'companyName':'VV', 'typesOfExicution' : 'validation', 'automation' : { $elemMatch: { 'projectName': 'myProject' } } })
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.