我需要知道是否可以有一个对象列表,这些对象在白天是唯一的。
我有一个这种格式的集合:
{
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 。但我无法设置独特的字段。
我需要推出一个新的计数器,如果它存在,它应该被替换。
答案 0 :(得分:1)
唯一索引仅适用于根文档,但不适用于嵌入式文档。这意味着您无法插入具有相同域和counter.day的两个文档。但是您可以插入嵌入的counters
重复行。
我需要推出一个新的计数器,如果这一天存在,它应该是 替换。
当您尝试插入新的嵌入式文档时,应检查是否存在具有此类日期的文档,如果存在则进行更新,否则插入。