gpt4 book ai didi

python - 如果值不匹配则更新文档

转载 作者:可可西里 更新时间:2023-11-01 09:40:05 24 4
gpt4 key购买 nike

在 Mongodb 中,如果文档的一个字段存在,如何跳过更新?

举个例子,我有以下文档结构,如果 link 键不匹配,我只想更新它。

{
"_id": {
"$oid": "56e9978732beb44a2f2ac6ae"
},
"domain": "example.co.uk",
"good": [
{
"crawled": true,
"added": {
"$date": "2016-03-16T17:27:17.461Z"
},
"link": "/url-1"
},
{
"crawled": false,
"added": {
"$date": "2016-03-16T17:27:17.461Z"
},
"link": "url-2"
}

]
}

我的更新查询是:

links.update({
"domain": "example.co.uk"
},
{'$addToSet':
{'good':
{"crawled": False, 'link':"/url-1"} }}, True)

部分问题是 crawl 字段可以设置为 TrueFalse 并且日期也总是不同的 - 我不知道' 如果 URL 存在,则要添加到数组中,无论 crawled 状态如何。

更新:为了清楚起见,如果 URL 不在文档中,我希望将其添加到现有数组中,例如,如果引入了 /url-3,文档将如下所示:

{
"_id": {
"$oid": "56e9978732beb44a2f2ac6ae"
},
"domain": "example.co.uk",
"good": [
{
"crawled": true,
"added": {
"$date": "2016-03-16T17:27:17.461Z"
},
"link": "/url-1"
},
{
"crawled": false,
"added": {
"$date": "2016-03-16T17:27:17.461Z"
},
"link": "url-2"
},
{
"crawled": false,
"added": {
"$date": "2016-04-16T17:27:17.461Z"
},
"link": "url-3"
}

]
}

domain 将是唯一的并且特定于链接,我希望它将 link 插入到 good 数组中(如果不是) t 存在,如果它确实存在,则什么也不做。

最佳答案

执行此操作的唯一方法是使用 find_one 查找集合中是否有任何文档符合您的条件方法,您还需要考虑过滤条件中的“good.link”字段。如果没有匹配的文档,您可以使用 update_one 运行更新查询方法,但这次您不在查询条件中使用“good.link”字段。你也不需要 $addToSet运算符,因为它没有做任何简单的事情,使用 $push update 运算符,它使您的意图明确。您也不需要在此处“更新”选项。

if not link.find_one({"domain": "example.co.uk", "good.link": "/url-1"}):
link.update_one({"domain": "example.co.uk"},
{"$push": {"good": {"crawled": False, 'link':"/url-1"}}})

关于python - 如果值不匹配则更新文档,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37332442/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com