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": [ ... ] },
]