Couchdb Mango 查询选择器对象数组中的对象

jam*_*unk 4 couchdb mongodb couchdb-mango

我有一个沙发数据库,​​里面装满了这种形式的条目

{
  ...
  "templates" :[
    {"template_id":"1"}
    {"template_id":"2"}
    {"template_id":"3"}
  ]
}
Run Code Online (Sandbox Code Playgroud)

我正在尝试编写一个 mango 查询,该查询将查找具有包含具有特定 template_id 的对象的模板的所有条目。我知道可以使用视图,但如果可能,我想使用芒果查询

Jua*_*uez 6

您应该在 Mango 查询选择器中尝试 $elemMatch 运算符。此运算符“返回包含至少一个元素与提供的查询条件匹配的数组字段的所有文档

此选择器将检索模板数组中包含 template_id:1 的任何文档

  {
    "templates": {
      "$elemMatch": 
        {"template_id":"1"} 
    }
  }
Run Code Online (Sandbox Code Playgroud)

elemMatch 运算符接受选择器表达式,因此您可以编写更复杂的查询。

 {
    "templates": {
      "$elemMatch": {"$or":[
        {"template_id":"1"},
        {"template_id":"3"}
        ]
      }
  }
Run Code Online (Sandbox Code Playgroud)