РЕДАКТИРОВАТЬ : ниже был выполнен запрос из DataGrip, версия mongodb 4.2.6
Я довольно новичок в mongoDB и копаю много документов, но не могу понять, как эта работа.
Мои коллекции такие:
db.cards.insertMany([
{
"Name": "SingleFaced Card",
"Face": [
{"Type": "Front", "Color": ["Black"]},
]
},
{
"Name": "DoubleFaced Card",
"Face": [
{"Type": "Front", "Color": ["Black"]},
{"Type": "Back", "Color": ["Red", "Yellow"]}
]
},
]);
Я хотел бы запросить карту, у которой есть хотя бы одно лицо с данным цветом, скажем Red
.
Я испробовал множество различных опций, все они дают мне счет 0
.
db.cards.count({"Face.Color": "Red"}); // 0 record
db.cards.count({"Face.Color": ["Red"]}) // 0 record
db.cards.count({"Face.Color": {$elemMatch:{$in:['Red']}}}) // 0 record
db.cards.count({"Face.Color": {$elemMatch:{$all:['Red']}}}) // 0 record
db.cards.count({"Face.Color": {$elemMatch:{$elemMatch:{$in:['Red']}}}}); // 0 record
Сначала я думал, что что-то не так с моей установкой, но ниже работали запросы на вложенные поля .
db.cards.count({"Face.Type" : "Front"}); // 2 record
db.cards.count({"Face.Type" : "Back"}); // 1 record
Есть предложения, как мне сделать эту работу? Я здесь использую неправильный выбор дизайна?