问题标签 [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.
node.js - 错误:在处理大异步循环时连接 EADDRNOTAVAIL
我遇到了一个非常奇怪的问题。我正在导入一些大的 xml 文件并将它们存储到 mongoDB 中。该算法是一个典型的异步循环:
现在(代码突然没有任何显着变化)我在执行循环时收到以下错误:
大约一分钟后发生错误。在此期间处理的项目数量始终相同,但并不完全相同。
我试图找出connect/net
导致错误的原因,但我迷路了。我的代码中没有套接字连接。我有一个到 redis 的连接,但没关系是 mongoDB 连接吗?但是为什么会突然丢失呢?
唯一有助于运行整个循环的是在 mongo-callback 中执行递归循环调用,如下所示:
有谁知道这里出了什么问题?
谢谢,海诺布
mongodb - MapReduce、MongoDB 和 node-mongodb-native
我正在使用 node-mongodb-native 库在 MongoDB 上运行 MapReduce(来自 node.js)。
这是我的代码:
两个问题:
1)基本上,我的reduce函数被忽略了。无论我在其中放入什么,输出都只是我的 map 函数的结果(在这种情况下没有“测试”)。有任何想法吗?
2) 除非在用于排序的字段(在本例中为计数字段)上定义了索引,否则我会收到错误消息。我明白这是意料之中的。这似乎效率低下,因为正确的索引肯定是 (_id, count) 而不是 (count),因为理论上应该首先使用 _id(用于查询),然后才应该将排序应用于适用的结果。我在这里错过了什么吗?MongoDB效率低下吗?这是一个错误吗?
谢谢!:)
node.js - 如何在 node.js 中重用 mongodb 连接
我正在使用带有 mongodb 的 node-mongodb-native 驱动程序来编写网站。
我有一个关于如何打开一次mongodb连接,然后在集合名称用户user.js
和集合名称帖子中使用它的问题comment.js
我想打开数据库连接db.js
然后为用户和帖子集合插入/保存数据
目前的代码,我的db.js
我db.js
使用user.js
如下
和comment.js
node.js - GridFS:清除所有未引用的文件
我刚刚开始在 MongoDB 的 GridFS 中存储东西。在测试期间,我注意到许多文件正在创建但没有正确删除。我有一个集合users
,其中有一个字段avatar
。它包含ObjectId
文件的。
现在我想要一些命令,我可以使用它来删除那里没有引用的所有files
和。chunks
是否可以通过一个查询来做到这一点?也许“地图减少”?
另外我不确定如何正确删除 GridFS-Files node-mongodb-native
。
node.js - 如果数据库连接断开,为什么不调用 db.collection().find().toArray(callback) 中的回调?
我有这个代码:
其中 db 是到我的本地 mongodb 服务器的已打开数据库连接。这工作正常。但是,如果我在我的应用程序仍在运行时手动关闭我的 mongodb 服务器,然后执行这行代码,则永远不会执行回调,即使出现错误也不会执行。这是预期的行为吗?我该怎么做才能让我的应用程序对断开的数据库连接做出反应?
编辑:
我试过这个:
同样,这在连接处于活动状态时有效,但是当连接断开时,调用 find() 的匿名回调函数,并将 'err' 设为 null - 并且根本不调用 .toArray 的回调。如何重写我的代码,以便在 db 连接不活动时出现错误?
node.js - 用户集合的 TTL 索引
我有具有以下结构的“用户”集合:
我需要通过电子邮件使用注册确认,因此我需要您对以下方法的建议:
在该集合上为确认字段创建 TTL 索引:
/li>当用户注册时,然后创建这个并确认为当前时间:
/li>当用户发送确认您的帐户的请求时,我们会将其确认字段更新为 true,因为我们不希望该用户被 TTL 索引删除:
db.users.update({email: req.param('email'), {confirm: true}});
我想知道以下内容:
- 上述方法是否正确。
- 上述方法是否安全
windows - 如何在 Windows 中使用 nodejs 安装 node-mongodb-native
我在开发中使用nodejs和mongoose将文档保存到windows 中的mongodb,但我无法连接到mongodb。我的 nodeunit 测试总是被阻止到行mongoose.connect()
。
我发现猫鼬使用node-mongodb-native。我的问题是:</p>
- 我是否需要执行一些特殊说明才能在 Windows 7(64 位)中安装 node-mongodb-native?
- 如何在 Windows中安装node-mongodb-native ?
node.js - 使用 MongoDB 更新文档,增加一个字段并将其设置为 0(如果不存在)
我在 node.js 中使用 MongoDB
我想要的是在集合中插入文档。该文档有一个唯一的 ID,一个 lastAccess 字段,它存储上次访问的日期,以及一个 timesAccessed 字段,在创建文档时应该设置为 0,如果更新则增加 1。
我试过了:
但节点说:
执行此操作的简洁且安全的方法是什么?
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
)。
node.js - node-mongodb-native 创建顺序对象 ID
mongod-native 以某种方式为插入的对象创建顺序对象 ID。如果数据库可以完成这项工作,我会更喜欢它,或者 mongodb-native 至少可以使用与 db 相同的生成策略。
使用 mongodb-native 插入会产生:
使用 shell 插入同一个集合,会产生一个真实的 id:
这是什么原因造成的?这对复制/分片来说不是一个大问题吗?
顺便提一句。我正在使用
已经有了唯一的效果,_id 没有在节点中的对象上设置......