【发布时间】:2020-04-29 13:29:28
【问题描述】:
编辑:以下查询是从 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
关于我应该如何进行这项工作的任何建议?我在这里使用了错误的设计选择吗?
【问题讨论】:
标签: mongodb mongodb-query nosql