给出的文档如下所示:
{
"type" : "sometype",
"title" : "sometitle",
"references":{
"1": "someref",
"2": "otherref",
"3": ""
}
}
如何找到在子文档someref
中设置了引用references
的所有文档?
简单的find({references: "someref"})
无效,因为引用不是有效的数组。
答案 0 :(得分:0)
文档结构对于这种查询而言并不理想,但是您可以将聚合与$objectToArray运算符配合使用:
db.collection.aggregate([
{$addFields: {refs: {$objectToArray: "$references"}}},
{$match: {"refs.v": "someref"}},
{$project:{refs: 0}}
])
答案 1 :(得分:0)
如果您要查找的子文档字段的数量很少,则可以使用$or
来过滤集合db.collection.find(
{ $or: [
{"references.1": "someref"},
{"references.2": "someref"},
{"references.3": "someref"}
]} )