gpt4 book ai didi

node.js - NodeJS + Mongo : Insert if not exists, 否则 - 更新

转载 作者:IT老高 更新时间:2023-10-28 13:06:04 28 4
gpt4 key购买 nike

我的 mongodb 集合中有一个对象。它的架构是:

{
"instruments": ["A", "B", "C"],
"_id": {
"$oid": "508510cd6461cc5f61000001"
}
}

我的收藏可能有这样的对象,但可能没有。我需要检查是否存在带有键“instruments”的对象(请注意,我现在不知道“instrument”是什么值,它可能包含任何值或数组),并且如果存在 - 执行更新,否则 - 插入一个新值。我该怎么做?

collection.find( {  "instruments" : { $exists : true } }, function(err, object){
if (object) {
//update
} else {
//insert
}
});

不起作用((

最佳答案

如果你想插入一个没有找到的文档,你可以在update()方法中使用upsert选项:

collection.update(_query_, _update_, { upsert: true });

查看 upsert 的文档行为。

$exists 运算符的示例。

假设您的收藏中有 6 个文档:

> db.test.find()
{ "_id": ObjectId("5495aebff83774152e9ea6b2"), "a": 1 }
{ "_id": ObjectId("5495aec2f83774152e9ea6b3"), "a": [ ] }
{ "_id": ObjectId("5495aec7f83774152e9ea6b4"), "a": [ "b" ] }
{ "_id": ObjectId("5495aecdf83774152e9ea6b5"), "a": [ null ] }
{ "_id": ObjectId("5495aed5f83774152e9ea6b7"), "a": [ 0 ] }
{ "_id": ObjectId("5495af60f83774152e9ea6b9"), "b": 2 }

如果您想查找具有特定字段 "a") 的文档,您可以使用带有 $existsfind() 方法运算符 (node docs)。注意:这也会返回字段为空数组的文档。

> db.test.find( { a: { $exists: true } } )
{ "_id": ObjectId("5495aebff83774152e9ea6b2"), "a": 1 }
{ "_id": ObjectId("5495aec2f83774152e9ea6b3"), "a": [ ] }
{ "_id": ObjectId("5495aec7f83774152e9ea6b4"), "a": [ "b" ] }
{ "_id": ObjectId("5495aecdf83774152e9ea6b5"), "a": [ null ] }
{ "_id": ObjectId("5495aed5f83774152e9ea6b7"), "a": [ 0 ] }

关于node.js - NodeJS + Mongo : Insert if not exists, 否则 - 更新,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13010290/

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