【问题标题】:how to change the nested subdocument field status to true or false如何将嵌套的子文档字段状态更改为 true 或 false
【发布时间】:2023-01-04 15:56:21
【问题描述】:

我需要将文档状态中的特定嵌套子文档字段更改为 true 或 false,

我知道我的架构更嵌套,但我没有任何其他选择

这是我的文档模型

{
"_id":"63b3b4024"
"name":"dev"
"email":"dev@gmail.com"
"image":"https://sgp1.digitaloceanspaces.com"

"tickets":[
{
"sid":"63b3f5768"
"eid":"63b3f5777"
user_name:"john"
event_name:"workshop"
status:false
_id:{
"$oid":"63b4178c4"
}
},
{
"sid":"63b3f5769"
"eid":"63b3f5778"
"user_name":"john"
"event_name":"workshop"
"status":false
"_id":{
"$oid":"63b4178c5"
}
{
"sid":"63b3f5770"
"eid":"63b3f5779"
"user_name":"john"
"event_name":"workshop"
"status":false
"_id":{
"$oid":"63b4178c6"
}
{
"sid":"63b3f5771"
"eid":"63b3f5780"
"user_name":"john"
"event_name":"workshop"
"status":false
"_id":{
"$oid":"63b4178c7"
}
""__v":0
}]

我需要将 tickests.status 更改为 true 或 false。如何检查此字段?

谁能建议我找到这个的确切查询?

规格

  • 节点:v14.17.3,

  • 猫鼬:“^6.6.5”,

  • mongodb:图集

【问题讨论】:

  • 您要更新tickets 数组中的所有项目吗?

标签: node.js mongodb mongoose mongodb-query


【解决方案1】:

如果您需要为特定过滤器更新status,请使用findOneAndUpdate

Model.findOneAndUpdate({ "tickets._id": <id-of-your-ticket}, { "tickets.$.status": <new-status-value> });

【讨论】:

    【解决方案2】:

    您可以使用 arrayFilters 来识别要更改状态的票证,并使用更新方法:

    await Collection.updateOne(
      { _id: collectionId },
      {
        $set: {
          "tickets.$[ticket].status": false,
        },
      },
      { arrayFilters: [{ "ticket._id": ticketId }] }
    );
    

    【讨论】:

      猜你喜欢
      • 2020-11-25
      • 2019-02-05
      • 2019-07-08
      • 2017-11-05
      • 2019-06-16
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多