Database 更新Mongoose模型时出现问题,.findByIdAndUpdate()不工作

Database 更新Mongoose模型时出现问题,.findByIdAndUpdate()不工作,database,mongodb,mongoose,nosql,Database,Mongodb,Mongoose,Nosql,我正在尝试更新mongoDB中的一项,但无法使其正常工作。我用谷歌搜索了这个问题,但似乎找不到我做错了什么。我没有在控制台中得到任何错误,它实际上说更新成功了。到目前为止,我已经能够在数据库中创建和查找项目了。这是我的代码,如果有人能帮我发现问题,我将非常感激 const mongoose = require("mongoose"); mongoose.connect("mongodb://localhost/fruits", { useNewUrlPa

我正在尝试更新mongoDB中的一项,但无法使其正常工作。我用谷歌搜索了这个问题,但似乎找不到我做错了什么。我没有在控制台中得到任何错误,它实际上说更新成功了。到目前为止,我已经能够在数据库中创建和查找项目了。这是我的代码,如果有人能帮我发现问题,我将非常感激

const mongoose = require("mongoose");

mongoose.connect("mongodb://localhost/fruits", { useNewUrlParser: true, useUnifiedTopology: true });

const fruitSchema = new mongoose.Schema({
    name: String,
    rating: Number
});

const Fruit = mongoose.model("Fruit", fruitSchema);

// CREATE
// Fruit.create({
//     name: "Grape",
//     rating: "7"
// }, (err, fruit) => {
//     if (err) {
//         console.log(err);
//     } else {
//         console.log("SAVED FRUIT!");
//         console.log(fruit);
//     }
// });

// READ
// Fruit.findById({ _id: "5f85e2e36ef7e00c97ac484f" }, (err, fruit) => {
//     if (err) {
//         console.log(err);
//     } else {
//         console.log("FOUND FRUIT!");
//         console.log(fruit);
//     }
// });

// UPDATE
Fruit.findByIdAndUpdate({ _id: "5f85e2e36ef7e00c97ac484f" }, { $set: { color: "Green" } }, (err, fruit) => {
    if (err) {
        console.log(err);
    } else {
        console.log("UPDATED FRUIT!");
        console.log(fruit);
    }
});
下面是DB的样子

{
    "_id" : ObjectId("5f85e2e36ef7e00c97ac484f"),
    "name" : "Kiwi",
    "rating" : 6,
    "__v" : 0
}
{
    "_id" : ObjectId("5f85e3003dbb9d0c9bcca90d"),
    "name" : "Grape",
    "rating" : 7,
    "__v" : 0
}

在mongoose模式中定义颜色

const fruitSchema = new mongoose.Schema({
    name: String,
    rating: Number,
    color: String   // add this one.
});
更新时,不需要使用$set,只需传递对象即可

Fruit.findByIdAndUpdate({ _id: "5f85e2e36ef7e00c97ac484f" },  { color: "Green" }, (err, fruit) => {
    if (err) {
        console.log(err);
    } else {
        console.log("UPDATED FRUIT!");
        console.log(fruit);
    }
});


你知道为什么我不能用一个新的键:value更新它吗?(例如颜色:“绿色”)查看此链接,确切地说,就是我要找的!这解决了我的问题,非常感谢!!