不允许的字段类型数组-如何使用MongoDBv3.0在聚合中创建数组
我的文档结构是不允许的字段类型数组-如何使用MongoDBv3.0在聚合中创建数组,mongodb,aggregation-framework,Mongodb,Aggregation Framework,我的文档结构是 { _id : '', objects: { dyn1: { prop1: val1, prop2: val2 }, dyn2: { prop1: val1, prop2: val2 }, dyn3: { prop1: val1, prop2:
{
_id : '',
objects: {
dyn1: {
prop1: val1,
prop2: val2
},
dyn2: {
prop1: val1,
prop2: val2
},
dyn3: {
prop1: val1,
prop2: val2
}
}
}
我想对对象的内部对象进行搜索、排序和限制。我找到了一个适用于MongoDBv3.2的解决方案。我需要做的第一步是使每个内部对象成为单独文档的一部分$unwind
可以帮助我们,但它仅适用于阵列。所以,我的第一阶段是以数组的形式进行投影
{
$project: {
asArray: [
'$objects.dyn1',
'$objects.dyn2',
'$objects.dyn3'
]
}
}
阵列的创建在MongoDBv3.2中运行良好。但对于MongoDBv3.0,它抛出了以下错误:
异常:对象表达式MongoDB聚合数组中不允许的字段类型数组。
如何避免此错误,并在MongoDBv3.0中将值作为数组进行投影?是否有任何解决方法?对象不是数组吗?否@israel.zin对象不是数组so,对象是一个包含3个其他对象作为字段的对象:dyn1、dyn2、dyn3?那么,您使用哪个参数对字段进行排序?我将使用prop1
或prop2
对字段进行排序。如果所说的prop1
小于10,则查询应返回prop1
满足条件的所有内部对象。同样,也可以应用排序、跳过、限制等