在猫鼬的已区分模型中更新数组

编程入门 行业动态 更新时间:2024-10-07 08:21:09

在猫鼬的已区分模型中更新<a href=https://www.elefans.com/category/jswz/34/1771288.html style=数组"/>

在猫鼬的已区分模型中更新数组

我有一个名为Person的模型,该模型的鉴别符为"Worker",为它提供了数组的另一个locations字段。

我正在尝试将一个元素推到locations数组上,而无需经历fetch / modify / save方法(因此以后我可以使用updateMany同时更新多个文档)。

为什么在下面的代码中没有发生这种情况?我也尝试过findByIdAndUpdatefindOneAndUpdate

index.js

const { connect } = require("mongoose");

const Person = require("./Person");

connect("mongodb://127.0.0.1:27017/test?gssapiServiceName=mongodb", {
  useNewUrlParser: true,
}, async () => {
  console.log("Database connected")
  const person = await Person.create(
    {
      __t: "Worker",
      name: "John", 
      locations: ["America"],
    },
  )

  console.log(person);
  // Outputs: 
  // {
  //   locations: [ 'America' ],
  //   _id: 5eba279663ecdbc25d4d73d4,
  //   __t: 'Worker',
  //   name: 'John',
  //   __v: 0
  // }

  await Person.updateOne(
    { _id: person._id }
    {
      $push: { locations: "UK" }, 
    },
  )

  const updated = await Person.findById(person._id);

  console.log(updated);
  // (Updating "locations" was unsuccessful)
  // Outputs: 
  // {
  //   locations: [ 'America' ],
  //   __t: 'Worker',
  //   _id: 5eba279663ecdbc25d4d73d4,
  //   name: 'John',
  //   __v: 0
  // }
});

Person.js

const { Schema, model } = require("mongoose");

const personSchema = Schema({
  name: String,
});

const Person = model("Person", personSchema);

Person.discriminator(
  "Worker",
  Schema({
    locations: [String],
  })
);

module.exports = Person;
回答如下:

我能够重现此问题,原来您需要启用useFindAndModify选项。您可以通过几种方法来执行此操作,一种方法是将其设置为opon连接:

mongoose.connect('mongodb://localhost/...', { useNewUrlParser: true, useFindAndModify: true });

检查this以获取更多信息。

更多推荐

在猫鼬的已区分模型中更新数组

本文发布于:2024-05-07 13:03:38,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/1756370.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:数组   模型

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!