我想在 MongoDB 中使用以下功能。我有一个名为“实体”的集合,它基本上存储实体文本并且它是计数的。该集合如下所示:
[{u'_id': u'facebook', u'n': 120},
{u'_id': u'florida', u'n': 98},
{u'_id': u'vegas', u'n': 94},
{u'_id': u'andrew_mason', u'n': 93},
{u'_id': u'obama', u'n': 85},
{u'_id': u'twitter', u'n': 81},
{u'_id': u'outlook', u'n': 81},
{u'_id': u'delhi', u'n': 75},
{u'_id': u'google', u'n': 74},
{u'_id': u'virginia', u'n': 71}]
现在,我想用新的实体更新这个集合。基本上,我将在这样的数组中准备好新实体:
entitySet = ['google', 'Abhishek_Vaid', 'andrew_mason']
我的意图是,对于集合中已经存在的实体,它们的计数应该更新。至于不在集合中的实体,它们的计数应该初始化为 1。我想使用单个 MongoDB 查询来实现这两种效果。到目前为止,我已经能够找到以下查询:(它是 PyMongo 风格的,但它仍然是一个 MongoDB 查询)
ENTITY_DB_HANDLE.entities.update (
{'_id' : {'$in' : entitySet} }, {'$inc' : {'n' : 1} }, upsert=True, multi=True )
但是,此查询仅更新现有实体计数,不会推送新实体。
对此有什么想法吗?