mongodb Pymongo只根据值向上插入某些记录

af7jpaap  于 2023-03-07  发布在  Go
关注(0)|答案(1)|浏览(161)

我有下面的python函数,它可以查找任何具有相同storeID和countryID的字段,但我只想在updated_by字段为"owner"时更新它们,或者在storeID和countryID不存在时插入它们。
我现在的函数的问题是,它检查它是否被所有者更新过,并且只更新那些(正确的)。但是如果它确实存在,但是被其他人更新过,我不想插入一个。
有人能帮我吗?

`    for field in fields:
        operations.append(
            UpdateOne(
            {
                'store': field.storeID,
                'country': field.countryID,
                'updated_by': "owner",
            },
            {
                "$set": {
                    'value': field.value,
                    'updated_at': convertDST(datetime.now()),
                },
                "$setOnInsert": {
                    'created_at': convertDST(datetime.now()),
                },
            },
            upsert = True
        ));
    
    database['fields'].bulk_write(operations)`
qpgpyjmq

qpgpyjmq1#

根据官方的mongodb文档,upsert不能有两个条件。
upsert-boolean如果为真,update()可以是:

  • 如果没有文档与查询***匹配,则创建新文档***。有关详细信息,请参阅upsert行为。
  • 更新与查询匹配的单个文档。

参见:www.example.comhttps://www.mongodb.com/docs/manual/reference/method/db.collection.update/#std-label-update-upsert
所以对我来说,这必须在python中的多个查询中完成。

相关问题