【问题标题】:mongoose + multiple records insert or update based on input猫鼬+多条记录根据输入插入或更新
【发布时间】:2021-03-10 05:05:05
【问题描述】:

我有如下的用户集合(添加了几个字段仅供参考)。我正在使用猫鼬 npm 模块。

const UserSchema = new mongoose.Schema({
   user_name: String,
   email: String,
   status: String
});

我正在尝试在一个查询中插入/更新多条记录。

我知道使用 insertMany 函数可以插入多条记录:

示例输入:

[
  {
    user_name: 'test1',
    email: 'test1@gmail.com',
    status: 'active'
  },
  {
    user_name: 'test1',
    email: 'test2@gmail.com',
    status: 'active'
  }
]

查询:

Users.insertMany(documents);

问题 1: 可以在一个查询中插入/更新多条记录。我添加了 2 条记录输入的示例..

[
  {
    user_name: 'test3',
    email: 'test1@gmail.com',
    status: 'active'
  },
  {
    _id: '5fb63d1695998716c82506be',
    status: 'de-active'
  }
]

我可以在一个查询中插入 test3 用户记录并更新第二个(参考 _id)用户记录吗?

问题 2:

可以在单个查询中更新多条记录。

输入:

[
  {
    _id: '5fb63d1695998716c82506bd',
    user_name: 'test3',
    status: 'active'
  },
  {
    _id: '5fb63d1695998716c82506be',
    status: 'de-active'
  }
]

是否可以更新第一条记录(状态、用户名)和第二条状态记录?

我可以用两个查询来完成(1.插入查询,2.更新查询)

【问题讨论】:

    标签: mongodb mongoose mongodb-query


    【解决方案1】:

    没有分支更新。

    如您所知,它必须是两个查询。

    更新以这种方式工作。它分为三个部分。

    1. 查找文档的标准
    2. 文档符合条件时要设置的文档
    3. 更新选项。

    您可以选择更新多个文档等。没有办法进行映射,即与 id 匹配的文档必须使用此 $set,与 id2 匹配的文档必须使用另一个 $set doc。

    【讨论】:

    • 那么,我们需要执行一个查询来更新每条记录吗?
    • 使用全部承诺。
    • 不,您可以使用同一组数据更新多个文档
    • 不。我有一个带有 _id 键的对象数组。所以我需要更新每个列表中不同的数据。示例输入:,这里我需要更新第一条记录 user_name,id。第二条记录仅更新状态列,仅.. [ { _id: '5fb63d1695998716c82506bd', user_name: 'test3', status: 'active' }, { _id: '5fb63d1695998716c82506be', status: 'de-active' } ]
    • 现在我正在尝试使用 bulkwrite.. 但我试图找到任何其他好的解决方案。
    猜你喜欢
    • 2017-04-06
    • 1970-01-01
    • 1970-01-01
    • 2019-09-14
    • 1970-01-01
    • 2014-11-12
    • 1970-01-01
    • 2015-12-18
    • 1970-01-01
    相关资源
    最近更新 更多