比较 MongoDB 中的两个 Int32 字段
Compare two Int32 fields in MongoDB
你好,我是 MongoDB 的新手,希望有人能帮助我解决我的问题。我有一个具有以下文档结构的集合:
// collection: avgsalarydep
{
"_id" : ObjectId("60509a82f5034f42e0e0f909"),
"id" : "zufferli-j",
"firstname" : "Mark",
"middlename" : "Clemens ",
"lastname" : "Zufferli",
"works_in" : "F",
"salary" : 50000,
"email_address" : "addad@enron.com",
"avgjoin" : [
{
"_id" : "F",
"averagesalary" : 64833
}
]
}
现在我只想编写一个查找查询,显示所有工资低于平均工资的人。我试过例如:
.find({$expr:{$lt:["$salary", "$avgjoin.averagesalary"]}})
.find({$expr:{$lt:["$salary", "avgjoin.averagesalary"]}})
{$match:{ $expr: { $lt: { "$salary" , "$avgjoin.averagesalary" } }} }
但它要么只是 returns 所有人(如果他们赚得少就忽略),要么说“找不到记录”。我究竟做错了什么?如果您需要更多说明,请随时询问。将不胜感激。
像这样的东西有效:
db.avgsalarydep.find({
$expr: {
$lt: [
"$salary",
{
$min: "$avgjoin.averagesalary"
}
]
}
})
我使用了 $min 聚合运算符,以防 avgjoin
数组中可以有多个文档。
我注意到在您的示例文档中,avgjoin
中只有一个元素与文档的 works_in
字段具有相同的 _id
。如果情况总是如此,更新文档以便有一个字段等效于 avgjoin.averagesalary
将允许像您最初尝试的那样工作。
你好,我是 MongoDB 的新手,希望有人能帮助我解决我的问题。我有一个具有以下文档结构的集合:
// collection: avgsalarydep
{
"_id" : ObjectId("60509a82f5034f42e0e0f909"),
"id" : "zufferli-j",
"firstname" : "Mark",
"middlename" : "Clemens ",
"lastname" : "Zufferli",
"works_in" : "F",
"salary" : 50000,
"email_address" : "addad@enron.com",
"avgjoin" : [
{
"_id" : "F",
"averagesalary" : 64833
}
]
}
现在我只想编写一个查找查询,显示所有工资低于平均工资的人。我试过例如:
.find({$expr:{$lt:["$salary", "$avgjoin.averagesalary"]}})
.find({$expr:{$lt:["$salary", "avgjoin.averagesalary"]}})
{$match:{ $expr: { $lt: { "$salary" , "$avgjoin.averagesalary" } }} }
但它要么只是 returns 所有人(如果他们赚得少就忽略),要么说“找不到记录”。我究竟做错了什么?如果您需要更多说明,请随时询问。将不胜感激。
像这样的东西有效:
db.avgsalarydep.find({
$expr: {
$lt: [
"$salary",
{
$min: "$avgjoin.averagesalary"
}
]
}
})
我使用了 $min 聚合运算符,以防 avgjoin
数组中可以有多个文档。
我注意到在您的示例文档中,avgjoin
中只有一个元素与文档的 works_in
字段具有相同的 _id
。如果情况总是如此,更新文档以便有一个字段等效于 avgjoin.averagesalary
将允许像您最初尝试的那样工作。