【发布时间】:2017-10-05 12:59:50
【问题描述】:
tldr;我正在努力构建一个查询
- 进行聚合以获取某个键(“original_text_source”)上的值计数,其中
- 位于数组中的子文档中
完整说明
我嵌入了包含如下结构数组的文档:
{
"_id" : ObjectId("0123456789"),
"type" : "some_object",
"relationships" : {
"x" : [ ObjectId("0123456789") ],
"y" : [ ObjectId("0123456789") ],
},
"properties" : [
{
"a" : "1"
},
{
"b" : "1"
},
{
"original_text_source" : "foo.txt"
},
]
}
这些文档是根据 10k 个文本文件创建的,并在不同的文件夹中排序。在将文档插入 MongoDB 期间(分批),我搞砸并移动了一些文件,导致一个文件被导入两次(我的数据库的计数正好为 10001 个文档),但显然我不知道它是哪一个.由于“original_text_source”值之一的计数必须为 2,因此我打算只删除一个。
我阅读了$elemMatch 的解决方案,但由于我的数组元素是一个文档,我不确定如何继续。也许是mapReduce?但我无法将逻辑转移到我的文档结构中。
我也可以只创建一个新集合并重新上传所有集合,但万一我又搞砸了,我宁愿学习如何查询重复项。看起来更优雅:-)
【问题讨论】: