子文档列表中的唯一索引,由一个键索引

时间:2011-08-05 22:47:48

标签: mongodb pymongo

我需要知道是否可以有一个对象列表,这些对象在白天是唯一的。

我有一个这种格式的集合:

{
  domain: "google.com"
  counters: [
    { day: "2011-08-03", metric1: 10, metric_2: 15 }
    { day: "2011-08-04", metric1: 08, metric_2: 07 }
    { day: "2011-08-05", metric1: 20, metric_2: 150 }
  ]
}

我尝试过类似的东西:

db.test.ensureIndex({ domain: 1, 'counters.day': 1 }, { unique: true }).

upsert $ push ,但这不起作用。

然后我尝试了 upsert $ addToSet 。但我无法设置独特的字段。

我需要推出一个新的计数器,如果它存在,它应该被替换。

1 个答案:

答案 0 :(得分:1)

唯一索引仅适用于根文档,但不适用于嵌入式文档。这意味着您无法插入具有相同域和counter.day的两个文档。但是您可以插入嵌入的counters重复行。

  

我需要推出一个新的计数器,如果这一天存在,它应该是   替换。

当您尝试插入新的嵌入式文档时,应检查是否存在具有此类日期的文档,如果存在则进行更新,否则插入。