子集中的pymongo upsert增量

时间:2014-11-20 10:03:45

标签: python mongodb python-2.7 pymongo

我有一个mongo db对象,我希望以

的格式创建
{year:{month:{day:counts:{c:1}}}}

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

它实际上能够每天计算一些事件,所以将来我应该能够计算特定日期的事件,或者如果我想得到几天的计数,就可以总结它们。

我正在使用pymongo,我认为它可以使用upsert来完成,但是如何在像“Count”这样的文档属性上完成。“C”这里是我无法实现的东西

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

2 个答案:

答案 0 :(得分:2)

我不确定你想要做什么 - 插入一些如上所述的文件,或者增加嵌套的c字段?看起来您想要增加c,请尝试

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

如果这不是你想要的,你能更清楚地表达问题吗?

答案 1 :(得分:1)

首先,您应该从查询中删除“$ set”部分。 其次,增量的作用如下: "$inc": {"2014.11.20.Counts.c": 1}