【发布时间】:2014-10-10 14:39:54
【问题描述】:
我有一组具有以下属性的文档:
{
name: "Acme",
minEmployees: 11,
maxEmployees: 15,
price: 20,
priceMultiplierEmployees: 1.5
}
{
name: "Acme",
minEmployees: 0,
maxEmployees: 10,
price: 10
priceMultiplierEmployees: 1.2
}
{
name: "Acme",
minEmployees: 16
maxEmployees: 20
price: 50,
priceMultiplierEmployees: 1.6
}
如果我的一位用户输入minEmployees = 12 和maxEmployees = 14
Mongo 应该返回第一个文档:
因为
11 <= 12 <= 15 和 11 <= 14 <= 15
但是我在 Mongo 中创建匹配条件时遇到了问题(我还很新)。我一遍又一遍地阅读文档,但我不断得到与某些文档不匹配的结果。
上面的公式是
documentMinEmployees <= userInputMinEmployees <= documentMaxEmployees
和
documentMinEmployees <= userInputMaxEmployees <= documentMaxEmployees
这是我正在尝试使用的 mongo 查询的当前迭代:
db.products.aggregate(
[
{
$match: {
name: "Acme",
minEmployees: {$lte: 12}
}
},
{
$group: {
_id: {name: "$name", price: "$price"},
lowEndEmployees: {
$max: "$minEmployees"
},
finalPrice: {
$max: {
$add: ["$price", {$multiply: ["$priceMultiplierEmployees", {$subtract: [12, "$minEmployees"]}]}]
}
}
}
}
]
);
上面的查询,现在正在返回以下文档(如预期的那样):
{
name: "Acme",
minEmployees: 11,
maxEmployees: 15,
price: 20,
priceMultiplierEmployees: 1.5
}
{
name: "Acme",
minEmployees: 0,
maxEmployees: 10,
price: 10
priceMultiplierEmployees: 1.2
}
但我希望它返回的只是一个具有以下结果的文档。
{
name: "Acme",
price: 20,
finalPrice: 30
}
其中finalPrice 是以下操作的结果:20 * 1.5(12 - 11)
我的主要问题是我不知道如何在Mongo中编写这个匹配条件:
minEmployees <= userInput <= maxEmployees 与 minEmployees <= userInput2 <= maxEmployees
【问题讨论】:
标签: mongodb