3

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

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

预期的回应只会给我第一份文件。

4

1 回答 1

2

您不能引用值,只能引用键 - 因此您可以检查特定的“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
    }
  });
}
于 2019-06-05T12:29:16.140 回答