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

标签 couchdb couchdb-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字段。

当然,通过 View 更容易实现您想要的:

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

关于CouchDB Mango 查询 - 将值与数组项匹配,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56446226/

相关文章:

javascript - 如何获得按 "value"值降序排序的映射/归约结果?如果也使用列表函数可以实现这一点?

javascript - 在CouchDB中使用JSON模式

couchdb - cloudant 按多个值搜索索引

full-text-search - CouchDB 全文搜索

javascript - Couchbase 与 Cloudant CouchDB——reduce 中与 Javascript 的差异

erlang - 不同的 Erlang 应用程序应该在同一台机器上共享同一个虚拟机吗?

database - couchdb 使用分页显示不同的记录数?

javascript - 如何在couchDb mango中连接运算符$or & $and?

CouchDB 索引以连接文档之间的点

couchdb - $in/$or 查询可以使用索引吗?