Couchdb mango语法可以在一个查询中接受两个$OR运算符吗?

Couchdb mango语法可以在一个查询中接受两个$OR运算符吗?,couchdb,couchdb-mango,Couchdb,Couchdb Mango,在一条查询语句中放入两个$或操作时遇到问题。它忽略前面的$或运算符,只考虑查询中最后的$或运算符。(当查询中只有一个$或运算符时没有问题。)我想知道我是否做错了什么,使用CouchDB是否可以实现这一点,或者是否有办法解决。谢谢大家! 我正在Hyperledger结构上运行一个区块链,使用CouchDB作为状态数据库。()我对CouchDB的工作毫无经验,所以我可能对它的行为有点无知 这有点复杂,但我的物品基本上“属于”两个所有者和公司。我希望执行查询,以便在搜索所有者或公司时,它在两个不同的列

在一条查询语句中放入两个
$或
操作时遇到问题。它忽略前面的
$或
运算符,只考虑查询中最后的
$或
运算符。(当查询中只有一个
$或
运算符时没有问题。)我想知道我是否做错了什么,使用CouchDB是否可以实现这一点,或者是否有办法解决。谢谢大家!

我正在Hyperledger结构上运行一个区块链,使用CouchDB作为状态数据库。()我对CouchDB的工作毫无经验,所以我可能对它的行为有点无知

这有点复杂,但我的物品基本上“属于”两个所有者和公司。我希望执行查询,以便在搜索所有者或公司时,它在两个不同的列中进行搜索,以查看所有者/公司是否存在

e、 g.当我搜索公司A时,它应该在
company1\u id
company2\u id
中搜索
companyA

查询语句:

{“选择器”:{“docType”:“对象”,“所有者id”:{“$in”:[“所有者id”]}, “$或”:[{“公司1号”:{“$in”:[“公司1号”,“公司2号”]}, {“company2_id”:{“$in”:[“company_id_1”,“company_id_2”]}],“$or”: [{“owner1_-id”:{“$in”:[“owner_-id_-1”,“owner_-id_-2”]},{“owner2_-id”: {“$in”:[“所有者id_1”,“所有者id_2”]}], “object_id”:{“$lt”:“9999999999”},“sort”:[{“object_id”:“desc”}]}

应为:获取与上述查询对应的结果

发生了什么:我得到的结果忽略了第一个查询,因此它返回与以下查询对应的结果:

{“选择器”:{“docType”:“对象”,“所有者id”:{“$in”:[“所有者id”]}, “$或”:[{“所有者1\u id”:{“$in”:[“所有者1”、“所有者2”]}, {“owner2_id”:{“$in”:[“owner_id_1”,“owner_id_2”]}], “object_id”:{“$lt”:“9999999999”},“sort”:[{“object_id”:“desc”}]}


是的,它会忽略它,因为它是一个标准的JSON对象,所以每个键都必须是唯一的。通过一个更简单的示例,您会遇到相同的情况:

{
    "foo": 123,
    "foo": 345,
}
根据JSON解析器是接受第一个值还是最后一个值,生成的对象将是
{“foo”:123}
{“foo”:345}

解决方案是使用另一个逻辑层。在您的情况下,您可能需要一个
$和
包装您的
$或
条件:

"$and": [
    { "$or": [ ... ] },
    { "$or": [ ... ] },
]