Mongodb Mongo聚合-$在表达式中?
如果数组中包含字段,我希望有一个返回布尔值的步骤,如:Mongodb Mongo聚合-$在表达式中?,mongodb,aggregation-framework,Mongodb,Aggregation Framework,如果数组中包含字段,我希望有一个返回布尔值的步骤,如: $project: { // would return whether the field 'type' is banana or apple isFruit: { $type: { $in: ['apple', 'banana'] } }, }, 但这不起作用。看一下,我没有看到包含测试。这可能吗?这有点复杂,但您可以通过使用筛选输入数组,使其仅匹配类型的元素(如果有),然后将结果与[]进行比较: db.test.aggreg
$project: {
// would return whether the field 'type' is banana or apple
isFruit: { $type: { $in: ['apple', 'banana'] } },
},
但这不起作用。看一下,我没有看到包含测试。这可能吗?这有点复杂,但您可以通过使用筛选输入数组,使其仅匹配
类型的元素(如果有),然后将结果与[]
进行比较:
db.test.aggregate([
{$project: {
isFruit: { $ne: [[], { $filter: {
input: ['apple', 'banana'],
as: 'fruit',
cond: { $eq: ['$$fruit', '$type'] }
}}]}
}}
])
请注意,$filter
是在MongoDB 3.2中添加的。看起来很棒!关于可能的性能缺陷有什么想法吗?@Guig我不确定它的可扩展性如何,您必须在实际场景中进行测试。