【问题标题】:MongoDB: Create unique index for nested documentMongoDB:为嵌套文档创建唯一索引
【发布时间】:2018-03-05 09:28:45
【问题描述】:
Array
(
    [_id] => 1
    [OrderId] => 123456_0203_2500001101518267176
    [Items] => Array
       0 =>  Array (
            [ItemId] => "123456"
            [ItemDesc] => "This Item numer 123456"
        ),
       1 =>  Array (
            [ItemId] => "123457"
            [ItemDesc] => "This Item numer 123457"
        ),


)

Array
(
    [_id] => 1
    [OrderId] => 123456_0203_2500001101518267199
    [Items] => Array
       0 =>  Array (
            [ItemId] => "123458"
            [ItemDesc] => "This Item numer 123458"
        ),
       1 =>  Array (
            [ItemId] => "123459"
            [ItemDesc] => "This Item numer 123459"
        ),


)

我想让 ItemId 在文档中以及整个文档中都是唯一的。

唯一索引仅提供跨文档的唯一性。但是,我也想限制在文档中重复相同的 ItemId。

【问题讨论】:

  • 我不知道为什么要投反对票。

标签: arrays mongodb unique-index mongodb-indexes


【解决方案1】:

您可以在插入/更新文档时使用$addToSet。我认为您不需要索引。

$addToSet使用示例

db.test.update(
   { _id: 1 },
   { $addToSet: {letters: [ "c", "d" ] } }
)

详情:https://docs.mongodb.com/manual/reference/operator/update/addToSet/

【讨论】:

  • 我不确定这对我是否有用。这在更新文档时会很有用,对吧?
  • 正确。到目前为止,还没有简单的方法可以实现这一目标。我不知道你是如何使用 MongoDB 的。但是Mongoose中有一个独特的数组插件npmjs.com/package/mongoose-unique-array
猜你喜欢
  • 2020-09-22
  • 2022-11-29
  • 1970-01-01
  • 1970-01-01
  • 2013-01-06
  • 2012-04-26
  • 2012-06-15
  • 2011-05-24
  • 1970-01-01
相关资源
最近更新 更多