鍍金池/ 問答/數(shù)據(jù)庫/ mongodb查詢

mongodb查詢

如下結構的文檔, 需要根據(jù)搜索條件,匹配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"
    }
}
回答
編輯回答
葬愛

如果改變文檔結構是一種可接受的解決方案的話, 可以考慮把 property 改為數(shù)組:

{
    "_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 同時也支持對數(shù)組進行索引:
官方文檔 - multikey indexes

2017年8月10日 15:16