2014-11-20 3 views
1

У меня есть объект Монго дб, который я хочу, чтобы создать в форматеPyMongo upsert прирост подколлекция

{year:{month:{day:counts:{c:1}}}} 

{ 
    "2014" : { 
     "11" : { 
      "19" : { 
       "Counts" : { 
        "c" : 1 
       } 
} 
} 
} 
} 

его на самом деле быть в состоянии рассчитывать некоторые события каждый день, так что в будущем я должен быть в состоянии подсчитывать события в определенный день или даже суммировать их, если я хочу получить количество дней.

Я использую PyMongo, и я думаю, что это может быть сделано с помощью upsert, но как сделать это на свойства документа, как «Граф». «C» здесь что-то я не в состоянии достичь

postdata = {"2014":{"11":{"20"}},"date": curdate} 
install_counter.update(postdata,{'$set':{},'$inc':{"2014":{"11":{"20":1}}}},true,false) 

ответ

2

Я не уверен, что именно вы хотите сделать - вставить какой-нибудь документ, как выше, или приращение вложенного c поле? Похоже, что вы хотите увеличить c, поэтому попробуйте

collection.update({ "_id" : <_id of doc> }, { "$inc" : { "2014".11.19.Counts.c" : 1 } }) 

Если это не то, что вы ищете, не могли бы вы сформулировать вопрос более четко?

+0

отлично, и это именно то, что я хочу, вы знаете человека с телепатией :) –

1

Во-первых, вы должны удалить часть «$ set» из запроса. Во-вторых, прирост работает так: "$inc": {"2014.11.20.Counts.c": 1}

+0

Выполнено, не работает, как и ожидалось –

Смежные вопросы