MongoDB,如何在不指定密钥的情况下查询MongoDB中的子对象?

时间:2016-05-25 15:56:14

标签: mongodb

例如,我有这样的结构:

{ 
   name:{
        "en":"london", 
        "fr":"londres", 
        "sq":"londra"
   },
   ...
},
{
   name:{
        "de":"barcelona", 
        "sv":"barcelone"
   },
   ...
}
...

我想知道如何在这个例子中检索所有包含“lon”的城市,但是没有指定密钥(“de”或“fr”)?

所以,不是这个:

db.cities.find({$or:{"name.en":/lon/,"name.fr":/lon/, ...}})

但是像:

db.cities.find({"name":/lon/}})
-> find in the children of "name, don't care about the key

1 个答案:

答案 0 :(得分:0)

要获得此功能,您可以创建一个text index,其中包含所有字段:

db.collection.createIndex({“$ **”:“text”,                                 })

然后在您的查询中使用$search - more here

   db.cities.find( { $text: { 
             $search: "lon",  
             $caseSensitive: true,
      $diacriticSensitive: true
    } } )