问题标签 [node-mongodb-native]

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 投票
3 回答
8574 浏览

node.js - 错误:在处理大异步循环时连接 EADDRNOTAVAIL

我遇到了一个非常奇怪的问题。我正在导入一些大的 xml 文件并将它们存储到 mongoDB 中。该算法是一个典型的异步循环:

现在(代码突然没有任何显着变化)我在执行循环时收到以下错误:

大约一分钟后发生错误。在此期间处理的项目数量始终相同,但并不完全相同。

我试图找出connect/net导致错误的原因,但我迷路了。我的代码中没有套接字连接。我有一个到 redis 的连接,但没关系是 mongoDB 连接吗?但是为什么会突然丢失呢?

唯一有助于运行整个循环的是在 mongo-callback 中执行递归循环调用,如下所示:

有谁知道这里出了什么问题?

谢谢,海诺布

0 投票
1 回答
4572 浏览

mongodb - MapReduce、MongoDB 和 node-mongodb-native

我正在使用 node-mongodb-native 库在 MongoDB 上运行 MapReduce(来自 node.js)。

这是我的代码:

两个问题:

1)基本上,我的reduce函数被忽略了。无论我在其中放入什么,输出都只是我的 map 函数的结果(在这种情况下没有“测试”)。有任何想法吗?

2) 除非在用于排序的字段(在本例中为计数字段)上定义了索引,否则我会收到错误消息。我明白这是意料之中的。这似乎效率低下,因为正确的索引肯定是 (_id, count) 而不是 (count),因为理论上应该首先使用 _id(用于查询),然后才应该将排序应用于适用的结果。我在这里错过了什么吗?MongoDB效率低下吗?这是一个错误吗?

谢谢!:)

0 投票
2 回答
8668 浏览

node.js - 如何在 node.js 中重用 mongodb 连接

我正在使用带有 mongodb 的 node-mongodb-native 驱动程序来编写网站。

我有一个关于如何打开一次mongodb连接,然后在集合名称用户user.js和集合名称帖子中使用它的问题comment.js

我想打开数据库连接db.js然后为用户和帖子集合插入/保存数据

目前的代码,我的db.js

db.js使用user.js如下

comment.js

0 投票
1 回答
572 浏览

node.js - GridFS:清除所有未引用的文件

我刚刚开始在 MongoDB 的 GridFS 中存储东西。在测试期间,我注意到许多文件正在创建但没有正确删除。我有一个集合users,其中有一个字段avatar。它包含ObjectId文件的。

现在我想要一些命令,我​​可以使用它来删除那里没有引用的所有files和。chunks是否可以通过一个查询来做到这一点?也许“地图减少”?

另外我不确定如何正确删除 GridFS-Files node-mongodb-native

0 投票
1 回答
1599 浏览

node.js - 如果数据库连接断开,为什么不调用 db.collection().find().toArray(callback) 中的回调?

我有这个代码:

其中 db 是到我的本地 mongodb 服务器的已打开数据库连接。这工作正常。但是,如果我在我的应用程序仍在运行时手动关闭我的 mongodb 服务器,然后执行这行代码,则永远不会执行回调,即使出现错误也不会执行。这是预期的行为吗?我该怎么做才能让我的应用程序对断开的数据库连接做出反应?

编辑:

我试过这个:

同样,这在连接处于活动状态时有效,但是当连接断开时,调用 find() 的匿名回调函数,并将 'err' 设为 null - 并且根本不调用 .toArray 的回调。如何重写我的代码,以便在 db 连接不活动时出现错误?

0 投票
1 回答
210 浏览

node.js - 用户集合的 TTL 索引

我有具有以下结构的“用户”集合:

我需要通过电子邮件使用注册确认,因此我需要您对以下方法的建议:

  • 在该集合上为确认字段创建 TTL 索引:

    /li>
  • 当用户注册时,然后创建这个并确认为当前时间:

    /li>
  • 当用户发送确认您的帐户的请求时,我们会将其确认字段更新为 true,因为我们不希望该用户被 TTL 索引删除:

    db.users.update({email: req.param('email'), {confirm: true}});

我想知道以下内容:

  1. 上述方法是否正确。
  2. 上述方法是否安全
0 投票
1 回答
2312 浏览

windows - 如何在 Windows 中使用 nodejs 安装 node-mongodb-native

我在开发中使用nodejsmongoose将文档保存到windows 中的mongodb,但我无法连接到mongodb。我的 nodeunit 测试总是被阻止到行mongoose.connect()

我发现猫鼬使用node-mongodb-native。我的问题是:</p>

  1. 我是否需要执行一些特殊说明才能在 Windows 7(64 位)中安装 node-mongodb-native?
  2. 如何在 Windows中安装node-mongodb-native ?
0 投票
1 回答
3395 浏览

node.js - 使用 MongoDB 更新文档,增加一个字段并将其设置为 0(如果不存在)

我在 node.js 中使用 MongoDB

我想要的是在集合中插入文档。该文档有一个唯一的 ID,一个 lastAccess 字段,它存储上次访问的日期,以及一个 timesAccessed 字段,在创建文档时应该设置为 0,如果更新则增加 1。

我试过了:

但节点说:

执行此操作的简洁且安全的方法是什么?

0 投票
3 回答
7143 浏览

node.js - 在 express.js 中连接到 Mongodb-Native-Driver

我在 express.js 应用程序中使用 mongodb-native-driver。我在数据库中有大约 6 个集合,所以我创建了 6 个 js 文件,每个文件都有一个作为 javascript 对象的集合(例如function collection(){}),原型函数处理对这些集合的所有操作。我认为这将是一个很好的架构。

但是我遇到的问题是如何连接到数据库?我应该在每个文件中创建一个连接并使用它们吗?我认为这将是一种矫枉过正,因为 mongodb-native-driver 中的连接创建了一个连接池,并且拥有其中几个连接是不合理的。

那么如何创建单个连接池并在所有 collections.js 文件中使用它呢?我想要像在猫鼬中实现的那样的连接。如果我在应用程序架构中的任何思考过程是错误的,请告诉我。

使用 Mongoose 可以解决这些问题,但我在几个地方读过它比原生驱动程序慢,而且我更喜欢无模式模型。

编辑:我用模型创建了一个模块。每个集合都在一个文件中,并将数据库作为参数。现在在 index.js 文件中,我调用了数据库连接,并在从连接中获取数据库后保留了一个变量 db。(我使用了自动重新连接功能来确保连接没有丢失)。在同一个 index.js 文件中,我像这样导出了每个集合

这确保了数据库部分仅在一个模块中处理,并且应用程序只会调用每个 model.js 文件导出的函数,例如save()fincdbyid()等(whatever you do in the function is upto you to implement)。

0 投票
2 回答
483 浏览

node.js - node-mongodb-native 创建顺序对象 ID

mongod-native 以某种方式为插入的对象创建顺序对象 ID。如果数据库可以完成这项工作,我会更喜欢它,或者 mongodb-native 至少可以使用与 db 相同的生成策略。

使用 mongodb-native 插入会产生:

使用 shell 插入同一个集合,会产生一个真实的 id:

这是什么原因造成的?这对复制/分片来说不是一个大问题吗?

顺便提一句。我正在使用

已经有了唯一的效果,_id 没有在节点中的对象上设置......