【问题标题】:How can I update a parameter in all data in the collection/ MongoDb/Nodejs如何更新集合/MongoDb/Nodejs 中所有数据中的参数
【发布时间】:2017-08-01 15:54:00
【问题描述】:

我需要为特定集合中的所有数据中的特定参数设置特定值。例如;我有一个数据库,我的架构有年龄和名称参数,我想将每个人的年龄更新为 5。我已经搜索了这些问题,但我找不到任何类似的案例。 我怎么能做到这一点,或者我可以用 mongoose 或 mongoclient 或除 mongoshell 之外的任何东西来做到这一点?我正在使用 nodeJS mongoose 和 express。

这是我的代码(当然它不起作用:)

'exports.changeAll = function (req, res) {
var reqparameter=req.body.parameter;
var database=req.params.database;
var collection=req.params.collection;
mongoose.Promise = global.Promise;
mongoose.connect('mongodb://127.0.0.1::27017/' + project, {
    useMongoClient: true,
})
    .then(() => { 
        var Project =  mongoose.model(collection, ProjectSchema, collection);

        Project.update({},{$set:{parameter:reqparameter},function(err,done){
            if (err)
                res.send(err);
            else
                res.send('done' +reqparameter);
        }
        });
    });

}

//reqparameter=请求的参数值//

我也尝试过 mongoclient:(它也不工作,错误是关于 db.update 不是函数)

MongoClient.connect(url, function (err, db) {
console.log(collection,database);
db.update({}, { $inc: { parameter: reqparameter }},{multi:true});

console.log('done')

});

感谢您的时间和回答。

【问题讨论】:

  • 您的猫鼬示例没有使用"mutli": true,并且您的普通节点驱动程序示例实际上没有使用任何集合对象,因此会出错。在您说“不起作用”之前,您实际上需要先进行有效操作。

标签: node.js mongodb mongoose mongoose-schema


【解决方案1】:

如果你打算使用 mongoose,你应该将 options 参数传递给更新函数,并指定你想用{ multi: true } 更改所有匹配的文档:

这应该可行:

Project.update({},{$set:{parameter:reqparameter}, { multi: true }, callback)

【讨论】:

    猜你喜欢
    • 2020-04-29
    • 2019-08-21
    • 2013-09-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-07-29
    • 1970-01-01
    • 2013-02-14
    相关资源
    最近更新 更多