问题标签 [mongodb-shell]

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 投票
1 回答
366 浏览

javascript - 如何在 mongo db 2.6 中使用“$dateToString”可以替代吗?

我在 mongoDb 4.0 中使用此代码,它的工作完美无缺,但我的客户端 MongoDb 是 2.6,因此不支持 $dateToString。有没有使用 $dateToString 到 mongoDb 2.6 的替代品。

使用 MongoDb 4.0:

输出 :

但是在 MongoDb 2.6 中,我遇到了错误:

数据库设计:

在此处输入图像描述

0 投票
2 回答
282 浏览

javascript - Mongodb通过shell插入文档

我想对我的收藏执行 crud 操作。为了自动执行此操作,我编写了一个用于在我的集合中插入文档的脚本。

该脚本基本上应该从 json 文件中读取数据并将其插入到我的 db-collection 中。

如果我读取 json 文件,控制台会记录以下内容:

所以 json 对我来说看起来不错,但如果我执行脚本,它会抛出错误:

你们中有人知道如何克服这个错误吗?

0 投票
0 回答
77 浏览

mongodb - mongodb第二个副本集都是从属

我使用以下命令创建了一个副本集

当我检查 rs.status() 它显示 1 个主要和 2 个辅助。

第二个副本集:

现在我尝试使用以下命令创建第二个副本集。

当我在第二个副本集上检查 rs.status() 时,它显示所有都是次要的。

为什么第二个副本集上没有主副本?

任何人帮助我。谢谢

0 投票
0 回答
144 浏览

mongodb - Mongodb分片测试

我在本地机器(Windows)中有 mongodb 分片集群。但我不明白如何测试这个。

我的配置是:

复制集 1:

副本集 2:

副本集 3:

配置服务器副本集:

连接到集群:

添加分片:

使用分片键在数据库和集合上启用分片:

以下是当我使用命令 db.printShardingStatus() 检查分片状态时的日志;

我已将 100k 文档插入到在 57050 上运行的数据库的用户集合中。整个数据仅存储在一个分片中,即第二个副本集(s1)。我不明白分片是如何在这里工作的。它不会将所有碎片分开。

当我检查 cache.databases 集合中的 configdb mongos(57040) 时,我只看到一个副本集,如下所示。

稍后,如果我删除聊天数据库,我现在将在它存储的其他一些分片中创建新数据库。每次我们创建数据库时,它都会采用随机副本集。

0 投票
2 回答
1300 浏览

node.js - 如何在 Windows 上启动和停止 mongodb 服务器?

开始

停止

0 投票
1 回答
43 浏览

mongodb - 如何在mongodb的多个文档中删除数组内的重复对象?

我正在尝试删除 Mongodb 中多个文档中数组内的重复对象。我尝试了很多方法但无法修复

文件结构:-

就像我尝试过的更多文件一样:-

0 投票
0 回答
98 浏览

json - MongoDB JSON 验证未通过

我用验证器创建了一个非常基本的计数器集合。我还放了一个方法来调用它。在方法中,我有一个 findAndModify 函数来更新序列。当我调用它时,只有当我将其级别更改为 MODERATE 时它才通过验证器。这里有什么问题?

这是我的验证器方案。

这是自动更新功能。

这是我插入的shell命令来调用它。

和输出日志...

0 投票
1 回答
754 浏览

mongodb - 重新声明时我在 mongodb shell 中遇到错误

任何人都在 mongodbshel​​l 中遇到过这个问题

0 投票
1 回答
238 浏览

mongodb - MongoDB 集合 toArray() 长度比 collection.count() 少 20

我在 ubuntu 操作系统上使用 mongoDB 3.6.3 版。我创建了一个包含 100 条记录的集合

要操作 mongo shell 上的数据,我分配光标如下

cur = db.dummyData.find({}, {_id: 0})

现在cur.count()是 100 但是cur.toArray().length80。

我不确定为什么会这样。我尝试过使用一堆不同的集合 toArray() 长度总是比实际计数少 20。

希望有任何帮助来理解这种行为。

0 投票
1 回答
761 浏览

database - 允许在没有认证的情况下连接并且只读用户可以在MongoDB中写入

我必须在 MongoDB 服务器中创建一个新用户并授予它对单个数据库的只读权限。请注意,我不是这里的管理员。

我与我的用户连接并执行了以下代码:

然后我开始测试,我发现

  1. newuser我可以使用 Robo3T 和 Mongo Shell(mongo命令)来连接这个新创建的用户。
  2. 我可以读取mydatabase数据库
  3. 我仍然WRITE可以在这个数据库中自由地(插入、更新等)
  4. 我可以从服务器中的其他数据库中读取任何内容(我没有尝试写)。
  5. 我可以使用 Robo3t 和 Mongo Shell 连接此数据库而无需传递用户名和密码
  6. 我可以通过提供错误的用户名和密码来强制进行错误的身份验证(通过时)

当我执行db.runCommand({connectionStatus : 1})时,我得到这个输出:

使用 Mongo Shell 我连接这个命令(但也传递--authenticationDatabase):

所以我的问题是非常基本的,我猜。

  • 为什么我可以在不进行身份验证的情况下连接?
  • 为什么我仍然可以用这个只读用户写?
  • 为什么我仍然可以使用该用户访问其他数据库?

提前致谢!

@编辑:

我想知道它是否与此有关:

https://docs.mongodb.com/manual/tutorial/enable-authentication/

我见过一些人(检查一下)说忘记启用访问控制。由于我不是这个数据库的管理员,所以我仍然很困惑(我不是一个很有经验的用户)