Considérez le document suivant:
{
"_id" : ObjectId("5130f9a677e23b11503fee55"),
"ItemType" : "Bicycle"
"Attributes" : [{
"AttributeName" : "Spare Tire",
"AttributeValue" : "1"
}, {
"AttributeName" : "With helmet?",
"AttributeValue" : "0"
}, {
"AttributeName" : "Number of Locks",
"AttributeValue" : "1"
}]
}
Comment puis-je écrire la requête pour obtenir vélos avec pneu de rechange et pas de casque?
J'ai essayé ce qui suit mais cela ne me donne pas ce que je veux.
{
"$and" :
[
{ "ItemType" : "Bicycle" },
{ "$and":
[{ "Attributes.AttributeName" : "With helmet?" },
{ "Attributes.AttributeValue" : "0" }
]},
{ "$and":
[{ "Attributes.AttributeName" : "Spare Tire" },
{ "Attributes.AttributeValue" : "1" }
]}
]}
Il semble que, tant qu'il y a une valeur qui correspond à Attributes.AttributeValue
- quel que soit le Attributes.AttributeName
d'accompagnement - il renvoie ce document. Il est comme avoir cette requête:
{
"$and" :
[
{ "ItemType" : "Bicycle" }, //true
{ "Attributes.AttributeName" : "With helmet?" }, //true
{ "Attributes.AttributeName" : "Spare Tire" }, //true
{ "Attributes.AttributeValue" : "0" }, //any
{ "Attributes.AttributeValue" : "1" } //any
]}