问题标签 [mongodb-nodejs-driver]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
2 回答
268 浏览

javascript - 在 MongoDB 文档中移动元素

背景:

客户是具有名称字段的对象。

线是具有以下字段的对象:

  • inLine- 一系列客户
  • currentCustomer- 一个客户
  • processed- 一系列客户

集合“行”包含作为行对象的文档。


问题:

我正在尝试实现一个可以执行以下操作的程序:

  1. currentCustomerprocessed
  2. 设置currentCustomer为第一个元素inLine
  3. 弹出第一个元素inLine

由于一个字段的新值取决于另一个字段的先前值,因此原子性在这里很重要。

到目前为止我尝试了什么:

天真的方法

但是,currentCustomer它被设置为一个字面意思是“$inLine.0”processed的字符串,并且有一个字面意思是“$currentCustomer”的字符串。

聚合方法

但是,我收到以下错误:

MongoError:管道阶段规范对象必须只包含一个字段。

多阶段聚合方法

但是,$pop$push是无法识别的管道阶段名称。

我尝试只使用$set阶段来制作它,但它最终变得非常丑陋,我仍然无法让它工作。

0 投票
1 回答
134 浏览

node.js - 在 mongoose 上使用 MongoDB Node.js 驱动程序的优缺点,反之亦然

我正在开发一个使用 node.js 作为后端的 Web 应用程序项目。所以我使用 mongodb 数据库来存储和创建记录。当我深入研究 node.js 的 mongodb 驱动程序时,我发现有两个官方非常有名的框架可以干扰 monogdb 数据库。MongoDB Node.js 驱动程序和 Mongoose。

我想知道使用 MongoDB Node.js 驱动程序优于 mongoose 和 mongoose 优于 MongoDB Node.js 驱动程序的优缺点。

0 投票
2 回答
506 浏览

node.js - MongoDB 客户端字段级别加密 - NodeJS 驱动程序 - 未在本地密钥库的数据密钥文档中创建 keyAltNames 字段

我一直在关注本指南 -如何使用 MongoDB Client-Side Field Level Encryption (CSFLE) with Node.js/来测试 MongoDB CSFLE。

为此,在本地密钥库存储中创建数据密钥的步骤https://developer.mongodb.com/how-to/client-side-field-level-encryption-csfle-mongodb-node/#create- a-data-key-in-mongodb-for-encrypting-and-decrypting-document-fields数据密钥已成功创建,但 keyAltName 未附加到数据密钥的文档中。

我对此进行了多次测试,我的代码没有任何问题,我正在按照指南进行操作。我不明白是什么导致了这个问题。数据键创建成功,但没有 keyAltNames 字段。非常感谢您的帮助。

与数据密钥文档创建相关的代码

结果文件

在此处输入图像描述

包 JSON MongoDB 驱动程序/MongoDB 客户端加密 NPM 包版本

0 投票
1 回答
196 浏览

node.js - 如何在 node.js 中将 Mongodb 一个实例用于不同的不同模块

我在 node.js 中使用 mongodb 数据库和 mongodb 模块。我想知道如何将一个 mongodb 实例用于不同的模块?

我在 app.js 中创建了一个 mongodb 数据库实例。对于路由,我使用了另一个模块 myroutes.js,我想在 myroutes.js 中重新使用相同的 mongodb 实例(我已经在 app.js 中创建)。

我该怎么做?我尝试使用 app.set() 但它不起作用。

0 投票
1 回答
50 浏览

node.js - 嵌套对象数组的 MongoDB 查询优化

我需要有关嵌套对象数组的查询优化的帮助。

我们有大量文档的集合,每个文档都包含嵌套的对象数组,最高可达 3 级,如下所示:

集合名称:产品

收集的文件总数:2000万

每个文档的大小:> = 500 kb

我为我的产品系列添加了以下索引,如下所示,

  1. products.id 上的索引

    {“身份证”:1}

  2. 嵌套数组文档的索引

    { "products.sellers.seller_id":1 }

我的查询:

我的问题是查询总是在字段 id 上获取第一个索引,并且查询花费了大约 800 毫秒的时间,我需要对其进行优化。

0 投票
1 回答
186 浏览

javascript - mongo 客户端:如何在单独的文件中重用客户端?

这是 db.js 文件

我从我的 server.js 中调用了 connectWithMongoDb 函数。db 连接成功。但问题是我不能重用client. 例如,我想为集合创建一个单独的目录。(为了得到一个我需要client对象的集合)

所以,这是我的 collection.js 文件

但是一旦调用此文件(collection.js),问题就会出现。

我收到此错误:

0 投票
1 回答
20 浏览

javascript - 如何在此应用程序中启动 mogodb?

所以这家公司给了我在这个节点 js 应用程序中启动 MongoDB 的任务。我从未使用过 MongoDB,我不确定如何连接应用程序上的数据库。我只需要连接到数据库,请大家帮忙。

这是使用 MacOs catalina 的 github 和我:

https://github.com/Garrett-Freddo/kanban-api

0 投票
1 回答
38 浏览

node.js - mongodb,在附加到数组时检查键是否存在

注意:检查密钥是否books存在,如果不存在则创建而不是更新它。

我正在使用带有 nodejs 的 mongodb 驱动程序。

db.collection('userData')文档中是这样的:

插入新书条目时,如何检查文档中是否存在数组books,如果不存在则在文档中添加一个键books,然后插入书条目。

0 投票
1 回答
107 浏览

node.js - 如何使用 mongodb 驱动程序在 mongodb node js 中合并多个集合

我有 3 个收藏。我想组合这些并从合并的数据中过滤数据。

商业收藏

优惠收集

产品请求集合

从业务集合中,我需要获取 products.media_urls 中包含视频的产品,同样从 offer 中获取 product_request 集合,我想获取 media_urls 中包含视频的项目。我想从 product、offers、product_request 中获取项目,它们的 media_url 数组中有视频。

我想组合这些集合并过滤只有视频的 media_urls。对于单个集合,我使用正则表达式完成了过滤。

但我无法合并多个集合。当我使用放松。重复数据来了。

我的预期输出是

0 投票
1 回答
894 浏览

sveltekit - 如何在 SvelteKit 项目中使用 mongodb?

我用import { MongoClient } from 'mongodb';, (mongodb 的版本是 4.0.0-beta.5) 导入了 mongodb,它在svelte-kit devand中运行良好svelte-kit preview,但是当我尝试用 启动服务器时node build,它抛出Error: Dynamic require of "os" is not supported. 如何配置 sveltekit 或 vite 以在生产中导入 mongodb?