Je teste les données de printemps et le support de mongodb.Comportement de requête "OU" MongoDB inattendu
J'ai une question sur la création de la requête lors de l'utilisation de or-queries. Considérez ce qui suit:
Query query = new Query().or(new Query(where("receiverId").is(userId)), new Query(where("requesterId").is(userId)));
query.and(where("status").is(status));
Cela se traduira par la requête mongodb suivante:
"$or" : [ { "receiverId" : { "$oid" : "4d78696025d0d46b42d9c579"}} , { "requesterId" : { "$oid" : "4d78696025d0d46b42d9c579"}}] , "status" : "REQUESTED"}
Cela renvoie aucun résultat alors que l'on attend. L'exécution de cette requête dans les résultats de commande MongoDB en erreur suivant:
error: { "$err" : "invalid operator: $oid", "code" : 10068 }
Modification de la requête et en cours d'exécution dans la commande mongodb fonctionne très bien:
{ "$or" : [ { "receiverId" : ObjectId("4d78696025d0d46b42d9c579")} , { "requesterId" : ObjectId("4d78696025d0d46b42d9c579")}] , "status" : "REQUESTED"}
Notez l'utilisation de ObjectId (« ... ») au lieu de $ oid.
Est-ce que je vais quelque chose dans le mauvais sens? Peut-être que la configuration de la requête est incorrecte?
Merci! Utilisé mongosniff et ObjectId est réellement utilisé. – eirik