簡體   English   中英

MongoDB 更新子數組中的查詢

[英]MongoDB update query in subarray

另一個對象數組中的對象數組的更新。

我正在處理的 mongodb 字段:

otherFields: values,

tasks: [
 {
  _id: mongodb.objectID(),
  title: string,
  items:[{
   _id: mongodb.objectID(),
   title: string,
   completed: boolean        //field need to be update.
  }]
 },
 {}...
],

otherFields: value

樣品 mongodb 文件

我需要使用task_iditem_id查找文檔並更新任務項目中的已完成字段。 使用 mongoose findOneAndUpdate方法

const path = "tasks.$.items." + item_id + "completed";
collectionName.findOneAndUpdate( 
{ _id: req.user._id, "tasks._id": taskID }, 
{ $set: { [path]: true }}); 

以上查詢無效!!!

無需使用多個查詢條件,因為您想更新具有唯一 ID 的特定項目。 因此,您可以使用類似的東西:

collectionName.findOneAndUpdate(
  { 'tasks.items._id': itemID },
  ...
);

請記住,這種結構遠未優化,因為它基本上會查看整個數據庫......


現在我想起來了,您也會對更新有疑問,因為文檔中有兩個嵌套的 arrays。 在此處閱讀更多內容: 如何更新 mongodb 中的多個陣列元素

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM