我有一个文件:
"_id": ObjectId("THE DOCUMENT ID"),
"GROUP NAME": "First Floor",
"years": {
"0": {
"_id": "YEAR ID",
"year_classes": {
"0": {
"class_name": "CLASS A",
"_id": "CLASS ID",
"participants": {
"0": "PARTICIPANT ID"
}
},
"1": {
"class_name": "CLASS B",
"_id": "CLASS ID",
"participants": {
"0": "PARTICIPANT ID"
}
},
},
"year_name": "YEAR 1"
},
"1": {
"_id": "YEAR ID",
"year_classes": {
"0": {
"_id": "CLASS ID",
"class_name": "CLASS C",
"participants": [
]
}
},
"year_name": "YEAR 2"
},
}
需要在一年中增加一个班级。该代码通过 $YEAR_ID 变量(是一个字符串)具有年份 ID,该类将被添加到该变量中。
因此,它必须检查由 $NEW_CLASS_NAME(字符串变量)给出的类名是否已在当年使用。
我看到了 mongo 的 $and 运算符,但我无法让它工作。如果它是一个 SQL,它看起来很像: WHERE year_id
='$YEAR_ID' AND class_name
='$NEW_CLASS_NAME'
这怎么能在 MongoDB 中完成?
更新:
查询:
{ "years.year_classes.class_name": $NEW_CLASS_NAME, "years._id": $YEAR_ID }
正在搜索的文档(所以它总是会返回 TRUE)不是同一个数组。
有没有办法指导查询在同一个数组中找到这两个值,所以一个具有该名称的类,它位于具有特定 ID 的年数组中的类数组中?