我可以在我的代码中访问多个dbs,对于一些我们使用"mongoose": "4.11.7"
,但对于有问题的那个,我们称之为dbOne,我们使用"mongoose": "4.6.1"
。我最近需要编写一个节点脚本来更新dbOne上的集合,为此,我写了一个如下命令:
try {
await data.dbOne.CollectionOne.update({}, {
$unset: {
"attributeOne": "",
}}, {multi: true}).exec();
} catch (e) {
console.log(e);
}
这很好,所以我继续前进。但是,我现在必须在同一个数据库中更新另一个集合,让我们称之为CollectionTwo
,并且由于某种原因,上面的类似命令不起作用!即。
try {
await data.dbOne.CollectionTwo.update({}, {
$unset: {
"attributeOne": "",
}}, {multi: true}).exec();
} catch (e) {
console.log(e);
}
相反,正在发挥作用的是:
try {
let results = await data.dbOne.CollectionTwo.collection.updateMany({attributeOne: {$exists: true}}, {$set: {attributeOne: ""}});
console.log("Unset attributeOne");
} catch (e) {
console.log(e);
}
请注意我在第3个示例中必须执行以下操作才能正常工作:
updateMany
代替update
collection
关键字exec()
(我收到错误消息称exec()
不是函数)现在,我已经环顾四周,但我不确定这个问题是否与moogoose
版本差异,mongodb
有关,某种程度上是关于架构对象,或者是什么,所以我不是确定在哪里寻找解释。任何提示,建议或答案将不胜感激,我真的想了解这里发生了什么。