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

CouchDB Mango查询-将值与数组项匹配,couchdb,couchdb-mango,Couchdb,Couchdb Mango,如果我有这样的文档,是否可以使用mango查询查找签名数组中的uid与根文档中的uid匹配的所有文档 { _id: "1", uid: "12345", signatures: [ { uid: "12345" } ] }, { _id: "2", uid: "12345", signatures: [ { uid: "55555" } ] } 预期的响应只会给我第一个文档。您不能引用值,只能引用键-因此您可以检查数组中是否有特定的“uid” {

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

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

预期的响应只会给我第一个文档。

您不能引用值,只能引用键-因此您可以检查数组中是否有特定的“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
    }
  });
}