0
我有一个收集器模块,每隔30秒就会提取一个远程API。 这给我一个我在MongoDB数据库中插入或更新的对象列表。使用Golang更新MongoDB中没有循环的文档
{
"id" : "oulkhhvoiupokb",
"name" : "test1",
"status" : "OPEN"
},
{
"id" : "oulkhhvoisksbsjkkb",
"name" : "test2",
"status" : "CLOSED"
}
实际上,我只收集具有OPEN状态的对象。随着循环,我将对象的其余部分设置为CLOSED(因为它们不是OPEN)。 但是将来会花费很多时间,因为对象的长度会增长。
我使用Golang和MGO软件包。
请问有办法更快更清洁吗?像为Mongo文档设置基本字段值?要解释它的不同之处,当我将OPEN对象插入到数据库中时,其他已经在数据库中的所有对象都必须是CLOSED。 Mongo能做到吗?
谢谢。
你想要做什么?将状态更改为不是“OPEN”的所有文档的“CLOSED”(当然还没有“CLOSED”)? – icza
请参阅[“multi”](https://docs.mongodb.com/manual/reference/method/db.collection.update/#multi-parameter)中的'.update()'选项。这同样适用于每种语言实施的驱动程序。可能比“字符串”好一点的是,如果只有一个项目意味着使用['$ bit'](https://docs.mongodb.com/manual/reference/operator/update/bit/)与'xor'被“打开”。使用'$ bit'你可以做一个更新语句,而不是两个。但是价值需要是“数字”而不是。 –
感谢您的帮助。从远程API中,我只抽取OPEN对象,因为它是我需要的非常快速的信息。收集到的数据,我知道我的数据库中所有不在我从远程API获得的对象列表中的文档都是关闭的,因为它们不在OPEN列表中。所以我执行一个循环来将'.update()'作为CLOSED。我的需要是不要执行循环并将所有不在OPEN列表中的对象设置为CLOSED。 – Elwyn