mongodb 如何将嵌套子文档字段状态更改为true或false

2sbarzqh  于 2023-01-04  发布在  Go
关注(0)|答案(2)|浏览(172)

我需要将单据状态中的特定嵌套子单据字段更改为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,
  • Mongoose :“^6.6.5”,
  • 蒙古b:阿特拉斯
pdtvr36n

pdtvr36n1#

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

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

wlzqhblo2#

您可以使用arrayFilters来标识要更改其状态的票据,并使用以下更新方法:

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

在这里,您可以通过在arrayFilters中将id指定为ticket._id来标识所需的票据,并在$set中访问该票据。然后,您可以根据需要更改状态或任何其他字段。

相关问题