MongoDb pymongo如何增加多个文档

2024-09-28 01:34:02 发布

您现在位置:Python中文网/ 问答频道 /正文

我在MongoDb中有一个如下文档

{ 
   "_id" : ObjectId("53490030cf3b942d63cfbc7b"),
   "dt" : ISODate("2014-04-12T00:00:00Z"),
   "uId" : "abdc123", "count" : 12 
 }

我有一个uid列表["abdc123","abc","cde","efg"]

我需要为每个与今天日期匹配的uId增加一个count。如果任何uId在今天的“dt”中没有值,那么update应该为计数为1的每个uId添加一个新的doc

下面是python中的查询

^{pr2}$

但是输出并不像预期的那样,它只创建一个计数为1的文档

建议我在pymongo中使用正确的查询

在更新:用于递增一个已经存在的值,上面的代码可以工作,但是如果“uId”和“dt”不在集合中,则不会创建新文档


Tags: 文档id列表uidmongodbcountdt计数
2条回答

进行记录更新,如前所述,您需要使用pymongo.bulk.BulkUpsertOperation如下所示

from pymongo.bulk import BulkUpsertOperation
bulk=clientConn.db.table.initialize_ordered_bulk_op()

for i in someList:
    bulk.find({'uid':i,"dt":datetime(y,m,d)}).upsert().update({'$inc': {'count': 1}})
res=bulk.execute()

希望这会有帮助。在

我想你得做些像下面这样的事情才能使它生效。。在

["abdc123","abc","cde","efg"] { ///lopp all of them
  client.Mydb.mycoll.update({
    "uId": <loop-variable>, // for each value .. eg. "abc123" ... 
    "dt":datetime(y,m,d)},{"$inc":{"count":1}
    },
    upsert=True,
    multi=True
   )
}

相关问题 更多 >

    热门问题