问题标签 [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.
javascript - Mongodb通过shell插入文档
我想对我的收藏执行 crud 操作。为了自动执行此操作,我编写了一个用于在我的集合中插入文档的脚本。
该脚本基本上应该从 json 文件中读取数据并将其插入到我的 db-collection 中。
如果我读取 json 文件,控制台会记录以下内容:
所以 json 对我来说看起来不错,但如果我执行脚本,它会抛出错误:
你们中有人知道如何克服这个错误吗?
mongodb - mongodb第二个副本集都是从属
我使用以下命令创建了一个副本集
当我检查 rs.status() 它显示 1 个主要和 2 个辅助。
第二个副本集:
现在我尝试使用以下命令创建第二个副本集。
当我在第二个副本集上检查 rs.status() 时,它显示所有都是次要的。
为什么第二个副本集上没有主副本?
任何人帮助我。谢谢
mongodb - Mongodb分片测试
我在本地机器(Windows)中有 mongodb 分片集群。但我不明白如何测试这个。
我的配置是:
复制集 1:
副本集 2:
副本集 3:
配置服务器副本集:
连接到集群:
添加分片:
使用分片键在数据库和集合上启用分片:
以下是当我使用命令 db.printShardingStatus() 检查分片状态时的日志;
我已将 100k 文档插入到在 57050 上运行的数据库的用户集合中。整个数据仅存储在一个分片中,即第二个副本集(s1)。我不明白分片是如何在这里工作的。它不会将所有碎片分开。
当我检查 cache.databases 集合中的 configdb mongos(57040) 时,我只看到一个副本集,如下所示。
稍后,如果我删除聊天数据库,我现在将在它存储的其他一些分片中创建新数据库。每次我们创建数据库时,它都会采用随机副本集。
mongodb - 如何在mongodb的多个文档中删除数组内的重复对象?
我正在尝试删除 Mongodb 中多个文档中数组内的重复对象。我尝试了很多方法但无法修复
文件结构:-
就像我尝试过的更多文件一样:-
json - MongoDB JSON 验证未通过
我用验证器创建了一个非常基本的计数器集合。我还放了一个方法来调用它。在方法中,我有一个 findAndModify 函数来更新序列。当我调用它时,只有当我将其级别更改为 MODERATE 时它才通过验证器。这里有什么问题?
这是我的验证器方案。
这是自动更新功能。
这是我插入的shell命令来调用它。
和输出日志...
mongodb - 重新声明时我在 mongodb shell 中遇到错误
任何人都在 mongodbshell 中遇到过这个问题
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().length
80。
我不确定为什么会这样。我尝试过使用一堆不同的集合 toArray() 长度总是比实际计数少 20。
希望有任何帮助来理解这种行为。
database - 允许在没有认证的情况下连接并且只读用户可以在MongoDB中写入
我必须在 MongoDB 服务器中创建一个新用户并授予它对单个数据库的只读权限。请注意,我不是这里的管理员。
我与我的用户连接并执行了以下代码:
然后我开始测试,我发现
newuser
我可以使用 Robo3T 和 Mongo Shell(mongo
命令)来连接这个新创建的用户。- 我可以读取
mydatabase
数据库 - 我仍然
WRITE
可以在这个数据库中自由地(插入、更新等) - 我可以从服务器中的其他数据库中读取任何内容(我没有尝试写)。
- 我可以使用 Robo3t 和 Mongo Shell 连接此数据库而无需传递用户名和密码
- 我可以通过提供错误的用户名和密码来强制进行错误的身份验证(通过时)
当我执行db.runCommand({connectionStatus : 1})
时,我得到这个输出:
使用 Mongo Shell 我连接这个命令(但也传递--authenticationDatabase
):
所以我的问题是非常基本的,我猜。
- 为什么我可以在不进行身份验证的情况下连接?
- 为什么我仍然可以用这个只读用户写?
- 为什么我仍然可以使用该用户访问其他数据库?
提前致谢!
@编辑:
我想知道它是否与此有关:
https://docs.mongodb.com/manual/tutorial/enable-authentication/
我见过一些人(检查一下)说忘记启用访问控制。由于我不是这个数据库的管理员,所以我仍然很困惑(我不是一个很有经验的用户)