您好,我是 MongoDB 的新手,希望有人能幫助我解決我的問題。我有一個具有以下檔案結構的集合:
// collection: avgsalarydep
{
"_id" : ObjectId("60509a82f5034f42e0e0f909"),
"id" : "zufferli-j",
"firstname" : "Mark",
"middlename" : "Clemens ",
"lastname" : "Zufferli",
"works_in" : "F",
"salary" : 50000,
"email_address" : "[email protected]",
"avgjoin" : [
{
"_id" : "F",
"averagesalary" : 64833
}
]
}
現在我只想寫一個查找查詢,顯示所有工資低于平均工資的人。我嘗試過例如:
.find({$expr:{$lt:["$salary", "$avgjoin.averagesalary"]}})
.find({$expr:{$lt:["$salary", "avgjoin.averagesalary"]}})
{$match:{ $expr: { $lt: { "$salary" , "$avgjoin.averagesalary" } }} }
但要么它只是回傳所有人(忽略他們的收入是否減少),要么說“沒有找到記錄”。我究竟做錯了什么?如果您需要更多說明,請隨時詢問。幫助將不勝感激。
uj5u.com熱心網友回復:
像這樣的作業:
db.avgsalarydep.find({
$expr: {
$lt: [
"$salary",
{
$min: "$avgjoin.averagesalary"
}
]
}
})
作業 Mongo 游樂場
我使用$min聚合運算子以防avgjoin陣列中可能有多個檔案。
我注意到在您的示例檔案中, 中只有一個元素avgjoin,它與_id您的檔案的works_in欄位相同。如果總是這樣,更新檔案以便有一個等效于的欄位avgjoin.averagesalary將允許類似于您最初嘗試的操作。
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/389737.html
下一篇:mongo查詢不會觸發復合索引
