gpt4 book ai didi

node.js - Mongoose如何查询多个文档,如果没有找到则保存并返回id?

转载 作者:太空宇宙 更新时间:2023-11-04 00:49:48 24 4
gpt4 key购买 nike

我正在尝试创建一个查询来满足以下条件:

  1. 在集合中搜索具有指定名称的文档。
  2. 如果集合中不存在指定名称的文档,则创建新文档。
  3. 返回新保存或未保存的文档的 ._id。

如何在不使用 for 循环的情况下实现此目的?

var tagArr = req.body.tags.join()

Tag.find({tagName: {$in: tagArr}}, function(err, docs){
// find the tag._ids by tagNames
// if tag not found, create a tag
// return old and new tag_ids with the tagNames
}

最佳答案

您应该使用findOneAndUpdate()upsert 选项设置为 true:

var tagArr = req.body.tags.join();
var idArr = [];

tagArr.forEach(function(tag){
Tag.findOneAndUpdate(
{tagName: tag},
{tagName: tag},
{upsert: true},
function(err, doc){
if(!err)
idArr.push(doc._id);
}
});

如果没有指定名称的标签,findOneAndUpdate() 将创建具有该名称的新标签并返回它,以便您可以获得其 _id。

关于node.js - Mongoose如何查询多个文档,如果没有找到则保存并返回id?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33092096/

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