0
全部 我正在嘗試在MongoDB中進行連接,但也需要檢查條件並對連接返回的內部值進行求和。 我會解釋。 目前我有這個簡單的連接查詢,看起來像這樣:在mongoDB中查詢內部值
db.Sets.aggregate([
{
$lookup:
{
from: "ExecutionTasks",
localField: "identifier",
foreignField: "setIdentifier",
as: "execTask"
}
}
])
它返回的結果如下:
/* 1 */
{
"_id" : 1,
"name" : "Demo Set",
"identifier" : "demo-set",
"description" : "Demo Set",
"creator" : {
"id" : 1,
"name" : "admin"
},
"createdDate" : ISODate("2017-03-24T20:09:55.120Z"),
"updatedDate" : ISODate("2017-03-24T20:09:55.120Z"),
"execTask" : [
{
"_id" : 1,
"isActive" : 1,
"type" : "count",
"threshold" : {
"default" : "0",
"deviations" : []
},
"name" : "amishay",
"setIdentifier" : "demo-set",
"description" : "a",
"query" : {
"source" : 1,
"text" : "select * from t"
},
"creator" : {
"id" : 1,
"name" : "admin"
},
"createdDate" : ISODate("2017-03-27T20:03:22.275Z"),
"updatedDate" : ISODate("2017-03-27T20:03:22.275Z")
},
{
"_id" : 2,
"isActive" : 0,
"type" : "count",
"threshold" : {
"default" : "0",
"deviations" : []
},
"name" : "amishay2",
"setIdentifier" : "demo-set",
"description" : "test",
"query" : {
"source" : 1,
"text" : "select * from t"
},
"creator" : {
"id" : 1,
"name" : "admin"
},
"createdDate" : ISODate("2017-03-27T20:03:57.248Z"),
"updatedDate" : ISODate("2017-03-27T20:03:57.248Z")
}
]
}
我想這樣做的是隻返回數組的長度(execTask ),也只有那些擁有它等於1 所以基本上我想要得到的東西,如屬性isActive:
{
"_id" : 1,
"name" : "Demo Set",
"identifier" : "demo-set",
"description" : "Demo Set",
"creator" : {
"id" : 1,
"name" : "admin"
},
"createdDate" : ISODate("2017-03-24T20:09:55.120Z"),
"updatedDate" : ISODate("2017-03-24T20:09:55.120Z"),
"execTask" : 1
}
我檢查在線編輯了許多問題,但我只看到了一些查詢集合屬性而不是查詢集合屬性的示例。
謝謝!
謝謝!有用! :)爲什麼你不使用sum運算符?你有鏈接解釋所有的聚合選項嗎?我從來沒有見過addFields選項。還有,美元符號的東西。我什麼時候使用它?它看起來像是操作符的前綴,但是我看到在編寫「$ execTask」時也使用了它,並且在編寫「$$ result.isActive」時還使用了2個美元符號......我只是不知道該美元符號的規則以及何時應該使用它。如果你有鏈接和解釋,這將是驚人的。再次感謝! :) –
不客氣。新增鏈接和簡短說明。我不知道你爲什麼提出'$ sum'操作符。另一個選項需要''將'execTask'數組''unwind'嵌入到文件中,然後加上'$ match'來保留'isActive'嵌入式文檔,並使用'$ group'和'$ push'嵌入式文檔返回' execTask'數組並計算'$ size'。如果您有任何問題,請隨時提出更多問題。 – Veeram
謝謝!是的,我還有其他問題。假設我也想創建一個過濾器/排序/跳過一些記錄,所有的邏輯應該在查找和addfields之後出現嗎?我的意思是我想用$ match來匹配輸出集合來查詢,我想添加$ skip和$ limit選項。謝謝! –