我有一个MongoDB集合,其中包含以下格式的文档:
{
"_id" : ObjectId("4e8ae86d08101908e1000001"),
"name" : ["Name"],
"zipcode" : ["2223"]
}
{
"_id" : ObjectId("4e8ae86d08101908e1000002"),
"name" : ["Another ", "Name"],
"zipcode" : ["2224"]
}
Run Code Online (Sandbox Code Playgroud)
我目前可以获得与特定数组大小匹配的文档:
db.accommodations.find({ name : { $size : 2 }})
Run Code Online (Sandbox Code Playgroud)
这正确地返回name数组中包含2个元素的文档.但是,我无法执行$gt命令返回name字段数组大小超过2的所有文档:
db.accommodations.find({ name : { $size: { $gt : 1 } }})
Run Code Online (Sandbox Code Playgroud)
如何选择name大小大于1 的数组的所有文档(最好不必修改当前数据结构)?
我有一个集合,集合中的每个文档都有一个名为foo包含一组嵌入文档的数组.MongoDB shell中目前有一种简单的方法来计算其中有多少个实例foo?就像是:
db.mycollection.foos.count()还是db.mycollection.foos.size()?
数组中的每个文档都需要具有唯一性foo_id,我想快速计算以确保在集合中的适当随机文档的数组中包含适量的元素.
我在mongodb中有一个文档,其中包含一些数组。现在,我需要一个包含此数组的大量项目的字段。因此,我需要更新添加此字段的文档。我只是简单地认为这可以工作:
db.myDocument.update({
"itemsTotal": {
$exists: false
},
"items": {
$exists: true
}
}, {
$set: {
itemsTotal: {
$size: "$items"
}
}
}, {
multi: true
})
Run Code Online (Sandbox Code Playgroud)
但是它以“ not okForStorage”完成。我也尝试进行聚合,但是会引发异常:
"errmsg" : "exception: invalid operator '$size'",
"code" : 15999,
"ok" : 0
Run Code Online (Sandbox Code Playgroud)
什么是最佳解决方案,我做错了什么?我开始考虑编写用于计算总数的Java工具并使用它更新文档。