mongodb查询

如下结构的文档, 需要根据搜索条件,匹配property下的值,只要匹配到一个,就算结果集

如:db.coll.find({"property":{"test1_field_1":/a/}}) ,能匹配到,

但是是需要property 下所有的字段都去匹配。而字段名是未知的,



{
    "_id" : ObjectId("5aaf36743e178f2e540cb6e9"),
    "property" : {
        "test1_field_1" : "acd",
        "test1_field_2" : "3",
        "xxx_field" : "hell",
        "field_unknown" : "hello world"
    }
}
阅读 1.7k
1 个回答

如果改变文档结构是一种可接受的解决方案的话, 可以考虑把 property 改为数组:

{
    "_id" : ObjectId("5aaf36743e178f2e540cb6e9"),
    "property" : [
        { "key" : "test1_field_1", "value" : "acd" },
        { "key" : "test1_field_2", "value" : "3" },
        { "key" : "xxx_field", "value" : "hell" },
        { "key" : "field_unknown", "value" : "hello world" }
    ]
}

这样就可以用 property.key 为字段进行查询了:

db.coll.find({"property.key":/a/})

mongo 同时也支持对数组进行索引:
官方文档 - multikey indexes

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进