CouchDB Mango查询-将值与数组项匹配

时间:2019-06-04 14:45:03

标签: couchdb couchdb-mango

如果我有这样的文档,是否可以使用芒果查询来查找签名数组中的uid与根文档中的uid匹配的所有文档?

{
    _id: "1",
    uid: "12345",
    signatures: [ { uid: "12345" } ]
},
{
    _id: "2",
    uid: "12345",
    signatures: [ { uid: "55555" } ]
}

期望的答复只会给我第一份文件。

1 个答案:

答案 0 :(得分:1)

您只能引用键,而不能引用值,因此您可以使用

来检查数组中是否存在特定的“ uid”
{
   "selector": {
      "signatures": {
         "$elemMatch": {
            "$eq": {
               "uid": "12345"
            }
         }
      }
   },
   "fields": [
      "_id",
      "_rev"
   ]
}

但是您不能声明uid应该等于数组外部的uid字段。

当然,通过视图更容易实现所需的目标

function(doc) {
  doc.signatures.forEach(function(elem) {
    if (elem.uid == doc.uid) {
      emit(null, null);
      return
    }
  });
}