【问题标题】:How do I update more than one mongodb records at once? [duplicate]如何一次更新多个 mongodb 记录? [复制]
【发布时间】:2016-05-18 02:10:20
【问题描述】:

所以我在后端使用 express 和 mongodb 创建了一个基本的 todo 应用程序,我有一个看起来像这样的任务模式:

var taskSchema = mongoose.Schema({
    task: String,
    time:Date,
    done:Boolean,
    id:Number   
});

默认情况下未设置完成,但在前端我有一个无序列表和一堆行,每行旁边都有一个复选框,我希望当用户从复选框中选择任务列表并单击完成按钮它应该作为发布请求发送,而 mongodb 应该立即更新所有任务,这可能吗?我的方法正确吗?

【问题讨论】:

标签: node.js mongodb express


【解决方案1】:

假设这是数据库中的数据:

[
 {
   _id: "1",
   task: 'hello1',
   time: '11-02-2015',
   done: false
 },
 {
   _id: "2",
   task: 'hello2',
   time: '11-02-2015',
   done: false
 },
 {
   _id: "3",
   task: 'hello3',
   time: '11-02-2015',
   done: false
 },
 {
   _id: "4",
   task: 'hello4',
   time: '11-02-2015',
   done: false
 },
 {
   _id: "5",
   task: 'hello5',
   time: '11-02-2015',
   done: false
 }
];

因此,当单击 Done 时,您将通过 POST 请求发送所有选定的任务(我们称之为数组)。

数组将包含这样的 taskId 列表:

var tasksArr = [
  "1", "2", "3", "4"
];

所以你会在你的路由函数中做这样的事情..

var bulk = TaskSchema.collection.initializeUnorderedBulkOp();

for (var taskId in tasksArr) {
   bulk.find({_id: taskId}).update({
     '$set': {done: true}
   });
}

bulk.execute(function(err, bulkres) {
   console.log('modified:', bulkres.nModified);
});

希望这会有所帮助。

干杯,

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-08-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-01-21
    相关资源
    最近更新 更多