У меня проблемы с помещением двух операций $OR
в одну инструкцию запроса. Он игнорирует более ранние операторы $OR
и учитывает только последний оператор $OR
в запросе. (Проблема не возникает, когда в запросе присутствует только один оператор $OR
.) Интересно, я что-то не так делаю, возможно ли добиться этого с помощью CouchDB или есть ли способ обойти это? Спасибо!
Я запускаю блокчейн на Hyperledger Fabric, используя CouchDB в качестве базы данных состояний. (https://hyperledger -fabric.readthedocs.io / en / release-1.4 / couchdb_tutorial.html ) Я определенно не зациклен на работе CouchDB, поэтому я могу быть немного неосведомлен о том, как он должен себя вести.
Это довольно сложно, но мои объекты в основном "принадлежат" двум владельцам и компаниям. Я хочу выполнить запросы таким образом, чтобы при поиске владельца или компании он выполнял поиск в двух разных столбцах, чтобы увидеть, существует ли владелец / компания.
например. Когда я ищу компанию A, она должна искать Company A
в company1_id
и company2_id
.
Запрос:
{"селектор": {"docType": "объект", "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"}}, "sort": [{"object_id": "desc"}]}
Ожидается: Получить результаты, соответствующие приведенному выше запросу
Что произошло: Я получаю результаты, которые проигнорировали первый запрос, поэтому он возвращает результаты, соответствующие следующему запросу:
{"селектор": {"docType": "объект", "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"}}, "sort": [{"object_id": "desc"}]}