我$OR
在一个查询语句中放置两个操作时遇到问题。它忽略前面的$OR
运算符,只考虑$OR
查询中的最后一个运算符。(当查询中只有一个$OR
运算符时没有问题。)我想知道我是否做错了什么,是否可以使用 CouchDB 来实现,或者是否有解决方法。谢谢!
我正在使用 CouchDB 作为状态数据库在 Hyperledger Fabric 上运行区块链。(https://hyperledger-fabric.readthedocs.io/en/release-1.4/couchdb_tutorial.html)我绝对没有在 CouchDB 的工作方面经验丰富,所以我可能对它应该如何表现有点无知。
这有点复杂,但我的对象基本上“属于”两个所有者和公司。我想执行查询,这样当我搜索所有者或公司时,它会在两个不同的列中搜索以查看所有者/公司是否存在。
例如,当我搜索 A 公司时,它应该Company A
同时搜索company1_id
和company2_id
。
查询语句:
{"selector":{"docType":"object", "owner_id": {"$in": ["owner_id"]}, "$or": [{"company1_id": { "$in": [" company_id_1", "company_id_2"]}}, {"company2_id": { "$in": ["company_id_1", "company_id_2"]}}], "$or": [{"owner1_id": { "$in" : ["owner_id_1", "owner_id_2"]}}, {"owner2_id": { "$in": ["owner_id_1", "owner_id_2"]}}], "object_id":{"$lt":"99999999999" }}, "排序": [{"object_id": "desc"}]}
预期:获取与上述查询对应的结果
发生了什么:我得到忽略第一个查询的结果,因此它返回与以下查询相对应的结果:
{"selector":{"docType":"object", "owner_id": {"$in": ["owner_id"]}, "$or": [{"owner1_id": { "$in": [" owner_id_1", "owner_id_2"]}}, {"owner2_id": { "$in": ["owner_id_1", "owner_id_2"]}}], "object_id":{"$lt":"99999999999"}}, “排序”:[{“object_id”:“desc”}]}