因为MongoDB中没有办法过滤子文档(参考:How to select subdocuments with MongoDB)
MongoDB中是否有另一种方法/方法可以快速删除/过滤没有给定字段的字段,在下面的示例中没有该subdocument
字段?
通过在 mongodb之外处理结果并过滤掉所有空文档来做到这一点的唯一方法是什么?
(想象一下当你有一千个具有不同模式的子文档的情况。我做了一个 .find() 并得到 1000 个子文档,但 900 个是空的。我只想得到 100 个,所以我不必总是处理和将空的放在 MongoDB 之外。)
例如,您有这个 JSON,它位于collection named monday
:
{
document : [
{
subdocument : "Hello World"
},
{
subdocument : "Hello Moon"
},
{
another_field: "Hello Sun"
}
]
}
你做这个查询db.monday.find({},{_id:0,"document.subdocument":1})
结果将是:
{ "document" : [
{ "subdocument" : "Hello World" },
{ "subdocument" : "Hello Moon" },
{ }
] }
您会看到 another_field 尽管为空,但仍然返回。