簡體   English   中英

將修飾符應用於對象的多個元素

[英]Apply modifier to more than one element of an object

我有一個這樣的文檔結構:

{
  _id: ...,
  name: ...,
  keywords: {
    group_a: [1, 2, 5],
    group_b: [4, 7, 6]
  }
}

我知道我可以添加元素到的要素之一 keywords對象是這樣的:

db.coll.update({_id: ...}, {
  $addToSet: {
    'keywords.group_a': {
      $each: [9, 12, 17]
    }
  }
})

是否可以運行將相同的元素集添加到group_a group_b 就像是

db.coll.update({_id: ...}, {
  $addToSet: {
    ['keywords.group_a', 'keywords.group_b']: {
      $each: [9, 12, 17]
    }
  }
})

哪個當然無效。

我事先知道了組的名稱,但是“將它們添加到所有元素”的解決方案同樣可以。

您可以使用單個$addToSet運算符來影響多個字段,如下所示:

db.coll.update({_id: ...}, {
  $addToSet: {
    'keywords.group_a': {
      $each: [9, 12, 17]
    },
    'keywords.group_b': {
      $each: [9, 12, 17]
    }
  }
})

要使其保持干燥,您當然可以:

var each = { $each: [9, 12, 17] };
db.coll.update({_id: ...}, {
  $addToSet: {
    'keywords.group_a': each,
    'keywords.group_b': each
    }
  }
})

暫無
暫無

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

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