这是我的 mongo 样本集合,{ \'_id\' : ObjectId(\'62aeb8301ed12a14a8873df1\'),\'Fields\' : [ { \'FieldId\' : \'name\', &...
这是我的 mongo 样本集合,
{
"_id" : ObjectId("62aeb8301ed12a14a8873df1"),
"Fields" : [
{
"FieldId" : "name",
"Value" : [ "test_123" ]
},
{
"FieldId" : "mobile",
"Value" : [ "123" ]
},
{
"FieldId" : "amount",
"Value" : [ "300" ]
},
{
"FieldId" : "discount",
"Value" : null
}
]
}
在这里我想要获得匹配的记录,例如 \' Fields.FieldId \' 应该等于 \' amount \' 并且 \' Fields.Value.0 \' 应该 大于 0 或者其他给定的值。
请注意以下几点,
我尝试过以下方法,但没有效果,
db.form.aggregate([
{
$match:
{
{
$expr: {
$ne: [
{ $filter: {
input: '$Fields',
cond: { if: {$eq:["$$this.FieldId", "amount"]},
then:{$gte: [{$toDouble: "$$this.Value.0"}, 0]} }
}
}, []
]
}
}
}
}])
我不想使用 $project 或 $addFields。我只想进行直接 $match 查询。如果可以的话,请给我建议。
提前致谢,Mani