我正在测试 spring-data 及其 mongodb 支持。 使用 or 查询时,我在创建查询时遇到问题。考虑以下:
查询查询 = new Query().or(new Query(where("receiverId").is(userId)), new Query(where("requesterId").is(userId)));
查询.and(where("status").is(status));
这将导致以下 mongodb 查询:
“ $或”:[{“ receviverId”:{“ $ oid”:“ 4D78696025D0D46B42D9C579”}}},{“ requesterId”:{“ $ oid”:{“” $ oid“: ”}
这将返回零结果,而预期结果是 1。在 mongodb 命令中运行此查询会导致以下错误:
错误:{“$err”:“无效运算符:$oid”,“代码”:10068}
修改查询并在 mongodb 命令中运行它可以正常工作:
{ "$or" : [ { "receiverId" : ObjectId("4d78696025d0d46b42d9c579")} , { "requesterId" : ObjectId("4d78696025d0d46b42d9c579")}] , "状态" : "已请求"}
请注意使用 ObjectId("...") 而不是 $oid。 我的处理方式是错误的吗?也许查询设置错误? ​​