与模型的集合
{
stack: [{mean: 3.5}]
}
如何查询平均值小于 4.38 的堆栈数组索引?
db.stacks.aggregate([
{
$project: {
index: { $indexOfArray: ['$stack', {mean: { $lte: 4.38 }}] },
},
},
]);
我收到此错误:
{
"ok" : 0,
"errmsg" : "Expression $lte takes exactly 2 arguments. 1 were passed in.",
"code" : 16020,
"codeName" : "Location16020"
}
edit:
这不会给我错误,但也不匹配任何内容
db.mean.aggregate([
{
$project: {
size: { $size: '$stack' },
index: { $indexOfArray: ['$stack', {$lte: ['$mean', 4.38] } ] },
},
},
])
你可以运行$map https://docs.mongodb.com/manual/reference/operator/aggregation/map/index.html在每一个元素上stack
获取布尔值然后运行$数组索引 https://docs.mongodb.com/manual/reference/operator/aggregation/indexOfArray/index.html获取第一个的索引true
价值。你会得到-1
如果没有匹配的元素,请尝试:
db.col.aggregate([
{
$project: {
index: {
$indexOfArray: [
{ $map: { input: "$stack", in: { $lt: [ "$$this.mean", 4.0 ] } } },
true
]
}
}
}
])
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)