我有MongoDB条目,如下所示:
{
"_id" : ObjectId("57288862e4b05f37bc6ab91b"),
"_class" : "mydomain.ScheduleAbsenceContainer",
"containerStart" : ISODate("2016-04-06T07:30:00Z"),
"containerEnd" : ISODate("2016-04-06T10:00:00Z"),
"scheduleIntervalContainerAbsenceType" : "SCHOOL",
"scheduleIntervalContainers" : [
{
"_id" : null,
"marker" : 6,
"containerType" : "SCHOOL",
}
]
}
我会将所有 scheduleIntervalContainerAbsenceType 从 SCHOOL 更改为 SPARE_TIME 以及所有 containerType ' s从学校到 SPARE_TIME 。 有这么简单的可能吗?
答案 0 :(得分:0)
下面的代码可以满足您的需求。它更新所有具有“scheduleIntervalContainerAbsenceType”键的“SCHOOL”值的文档。
db.collection_name.find({"scheduleIntervalContainerAbsenceType" : "SCHOOL"})
.forEach(function (doc) {
doc.scheduleIntervalContainers.forEach(function (sch) {
if (sch.containerType === "SCHOOL") {
sch.containerType="SPARE_TIME";
}
});
doc.scheduleIntervalContainerAbsenceType="SPARE_TIME";
db.collection_name.save(doc);
});
如果要更新所有文档而不检查“scheduleIntervalContainerAbsenceType”值(仍然将其更新为“SPARE_TIME”),请更改您的查询。
db.collection_name.find({})
.forEach(function (doc) {
doc.scheduleIntervalContainers.forEach(function (sch) {
if (sch.containerType === "SCHOOL") {
sch.containerType="SPARE_TIME";
}
});
doc.scheduleIntervalContainerAbsenceType="SPARE_TIME";
db.collection_name.save(doc);
});