开发者

Unique index into a subdocument list, indexed by one key

开发者 https://www.devze.com 2023-03-26 20:58 出处:网络
i need to know if is possible to have a list of objects, where the objects areuniques by day. I have a collection with this format:

i need to know if is possible to have a list of objects, where the objects are uniques by day.

I have a collection with this format:

{
  domain: "google.com"
  counters: [
    { day: "2011-08-03", metric1: 10, metric_2: 15 }
    { day: "2011-08-04", metric1: 08, me开发者_StackOverflow中文版tric_2: 07 }
    { day: "2011-08-05", metric1: 20, metric_2: 150 }
  ]
}

I tried something like that:

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

with upsert and $push, but this not works.

Then I tried with upsert and $addToSet. but i can't set the unique fields.

I need to push a new counter, if the day exists, it should be replaced.


Unique indexes working only for the root document, but not for the embedded. So that's mean that you can't insert two documents with same domain and counters.day. But you can insert into embedded counters duplicated rows.

I need to push a new counter, if the day exists, it should be replaced.

When you trying to insert new embedded document you should check if document with such day exists and in case if it exists make an update, otherwise insert.

0

精彩评论

暂无评论...
验证码 换一张
取 消