我目前的代码:
var cursor = db.get('unameMap').find()
cursor.forEach(function(doc){
console.log("considering: " + doc)
});
对数据库的所有其他请求都有效,因此假定var db
已正确定义。
出于某种原因,这段代码在控制台中没有产生任何东西,在几个不同的集合上尝试过,它只是没有做任何事情。
.aggregate
之类的所有其他mongo代码都可以正常运行
最终我想这样做(更新集合中每个文档的属性)
var cursor = db.get('unameMap').find()
cursor.forEach(function(doc){
console.log("considering: " + doc)
doc.testProperty="newValue"
db.get('unameMap').save(doc);
});
答案 0 :(得分:1)
尝试使用此代码,但我认为db.get('unameMap')
不会返回unameMap的Schema模型。参考Mongoose文档,它返回Mongoose选项,但是他们不再多说这个。我建议你包括Schema模型并使用它而不是db.get(...)。
以下是光标示例:
var MyModel = require('./unamemap');
var cursor = MyModel.find().cursor();
next(cursor.next);
function next(promise) {
promise.then(function(doc) {
if (doc) {
console.log("considering: " + doc);
doc.testProperty="newValue";
doc.save(doc);
next(cursor.next());
}
});
}
答案 1 :(得分:0)
这有效:
var doc = db.TestSteps.findOne({"testScenarioId":"100","testSteps.testStepNumber":"1"}, { 'testSteps.$': 1 });
var the_element = doc.testSteps[0];
var updated_element = changeThisElement(the_element);
db.TestSteps.update(
{"testScenarioId":"100","testSteps.testStepNumber":"1"},
{$set: { 'testSteps.$': updated_element }}
)