Я тестирую данные Spring и их поддержку mongodb.
У меня есть вопрос о создании запроса при использовании or-запросов.Рассмотрим следующее:
Query query = new Query().or(new Query(where("receiverId").is(userId)), new Query(where("requesterId").is(userId)));
query.and(where("status").is(status));
Это приведет к следующему запросу mongodb:
"$or" : [ { "receiverId" : { "$oid" : "4d78696025d0d46b42d9c579"}} , { "requesterId" : { "$oid" : "4d78696025d0d46b42d9c579"}}] , "status" : "REQUESTED"}
Возвращает ноль результатов, пока ожидается один.Выполнение этого запроса в команде mongodb приводит к следующей ошибке:
error: { "$err" : "invalid operator: $oid", "code" : 10068 }
Изменение запроса и выполнение его в команде mongodb работает нормально:
{ "$or" : [ { "receiverId" : ObjectId("4d78696025d0d46b42d9c579")} , { "requesterId" : ObjectId("4d78696025d0d46b42d9c579")}] , "status" : "REQUESTED"}
Обратите внимание на использование ObjectId ("... ") вместо $ oid.
Я что-то не так делаю?Может быть, неправильная настройка запроса?