猫鼬查找并更新所有

时间:2020-02-13 22:14:59

标签: node.js mongodb mongoose

所以我目前正在使用

await User.findOneAndUpdate({email: req.user.email }, {lastLoad: 'dfConsignee'});

但是我希望能够使用提交表时要更新的相同truckNumber来更新所有用户。

所以我尝试使用此

await User.update({truckNumber: truckNumber }, {lastLoad: 'dfConsignee'});

但这仅出于某种原因更新了活动用户。填写表格后,我该如何更新所有具有相同卡车编号的帐户?

预先感谢你们<3

编辑---------------------------------------------- -------------------------------------------------- ----------------------------

“活动用户”是指登录用户。

猫鼬模式:

const mongoose = require('mongoose');

const UserSchema = new mongoose.Schema({
    name: {
        type: String,
        required: true
    },
    email: {
        type: String,
        required: true
    },
    password: {
        type: String,
        required: true
    },
    date: {
        type: Date,
        default: Date.now
    },
    isVerified: {
        type: Boolean,
        default: false
    },
    profilePic: {
        type: String,
        default: 'abc'
    },
    truckDriver: {
        type: Boolean,
        default: false
    },
    truckNumber: {
        type: Number
    },
    admin: {
        type: Boolean,
        default: false
    },
    customer: {
        type: Boolean,
        default: false
    },
    loadPlanning: {
        type: Boolean,
        default: false
    },
    lastLoad: {
        type: String,
        default: "dfConsignee"
    }
});

const User = mongoose.model('User', UserSchema);

module.exports = User;

示例文档:

{"_id":{"$oid":"aaaaaaaaaaaaaaaa"},
"isVerified":true,
"profilePic":"abc",
"truckDriver":true,
"admin":false,
"customer":false,
"loadPlanning":false,
"lastLoad":"aAtShipper",
"name":"Nicholas Cage",
"email":"NicholasCage@thegreatestactorever.com",
"password":"password",
"date":{"$date":{"$numberLong":"1580858993547"}},"__v":{"$numberInt":"0"},
"truckNumber":"123",}

为了进一步说明,在提交表单时,它将拉出已登录用户的卡车编号。提交表单时,我希望每个共享相同卡车编号的人也要在lastLoad中更新其值。

2 个答案:

答案 0 :(得分:0)

尝试使用updateMany()。生成的代码如下所示:

User.updateMany({truckNumber: truckNumber}, {lastLoad: 'dfConsignee'});

如果您真的想全面了解Mongoose和MongoDB,建议您看一下API docs for MongooseMongoDB Manual,它会详细介绍您使用的工具使用MongoDB时可用。这就是我找到这个问题的答案的方法!

答案 1 :(得分:0)

OMG终于弄清楚了:D

我认为,当我重新启动Nginx时,它将重新启动服务器上运行的应用程序(我会看到前端所做的更改,但是后端更改不会出现),一旦我重新启动了PM2,所有的后端更改随之而来。

谢谢大家的帮助:D

现在,“ await Users.updateMany({truckNumber:req.user.truckNumber},{lastLoad:'aAtShipper'}”)将使用共享卡车编号:D

更新所有帐户