【发布时间】:2011-12-10 07:15:39
【问题描述】:
我有一个 MongoDB 集合,其中包含以下格式的文档:
{
"_id" : ObjectId("4e8ae86d08101908e1000001"),
"name" : ["Name"],
"zipcode" : ["2223"]
}
{
"_id" : ObjectId("4e8ae86d08101908e1000002"),
"name" : ["Another ", "Name"],
"zipcode" : ["2224"]
}
我目前可以获取与特定数组大小匹配的文档:
db.accommodations.find({ name : { $size : 2 }})
这会正确返回 name 数组中包含 2 个元素的文档。但是,我无法执行$gt 命令来返回所有name 字段的数组大小大于2 的文档:
db.accommodations.find({ name : { $size: { $gt : 1 } }})
如何选择大小大于 1 的 name 数组的所有文档(最好不必修改当前数据结构)?
【问题讨论】:
-
较新版本的 MongoDB 有 $size 运算符;你应该看看@tobia的答案
-
实际解决方案:FooArray:{$gt:{$size:'length'}} --> 长度可以是任意数字
-
@SergiNadal:我认为
FooArray:{$gt:{$size:'length'}}不起作用!至少在嵌套对象上是一个数组person:{ids:[123,456]} -
数组应该有一个复数名称,所以你的数组字段
name应该命名为names。
标签: mongodb mongodb-query