问题标签 [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 投票
2 回答
1337 浏览

macos - mongo shell 未显示所有数据库

再会。

我一直在使用使用 mongodb 的meteorJS 进行开发。那里没有问题。我一直在使用 mongo shell 来访问我的开发机器(osx 10.11)上的数据库。这是我第一个使用 mongo 的项目,当 shell 加载时,它会连接到db.test,我总是show dbs会获取数据库列表,然后use myApp.

昨天每当我进入 shell 并键入show dbs唯一显示的是local 0.078GB. 但是,我的应用程序仍在工作并将数据提取和推送到数据库。

我检查了 mongod.conf 中的 dbpath,这似乎没问题。我不完全确定事情的确切顺序,但有两件事不同(我不确定这些是发生在show dbs没有显示所有内容之前还是之后,我不确定哪个先出现):

  • 加载 mongo shell 时出现此错误:

WARNING: soft rlimits too low. Number of files is 256, should be at least 1000"

我按照这些指示似乎阻止了该错误的出现(https://github.com/basho/basho_docs/issues/1402

  • 我使用 Meteor Toys 并且第一次更新(这是Meteor Toys 小部件user.profile.companyName中标准内的自定义字段。profile

奇怪的是应用程序仍然可以访问数据库和集合,但是 mongo shell 没有显示。我已经将 mongodbrew upgrade mongodb从 3.0.2 更新到 3.0.7 无济于事。

有任何想法吗?

0 投票
3 回答
227 浏览

javascript - MongoDB shell:如何删除数据库内所有集合中的特定元素

我想在所有集合中删除所有与正则表达式的巧合。

我需要这个,因为今天我的应用程序中的 JSON 解析器失败了,现在数据库已损坏。

我可以手动完成,但我有 100 多个集合,并且 db["X"].remove({ "DateTime": { $regex : "2015-11-16" } })为每个集合手动输入 mongo shell 需要相当长的时间。

您知道在 mongo shell 中自动执行此操作的任何方法吗?我总是通过RMongoR 中的包访问这个数据库,我可以通过dbRemoveQuery(rmongo.object, collection, query)但我想知道它是否可以在 mongo shell 中完成,也许更快一点。

0 投票
1 回答
31 浏览

mongodb - 如何获取在 mongoDB 中存在超过 1 次的具有相同字段的文档列表?

我想创建一个查询,该查询将获取在 mongoDB 中存在超过 1 次的标题的所有文档。

可以说这是我的文档:

我想设置一个查询,该查询将生成一个列表

这意味着具有相同标题的记录在数据库中存在超过 1 次。我可以在 Java 代码中执行此操作,但似乎在数据库级别执行此操作更合理。

0 投票
1 回答
906 浏览

mongodb - 所有数据仅存储在 MongoDB Sharded Cluster 中的单个分片中

我创建了一个 MongoDB Auto Sharding Cluster,它有 3 个 Shard 服务器(没有复制)、1 个 Config 服务器和 1 个 Mongos 实例。

这是 sh.status() 输出。

尽管这里的块数量很大,但所有数据都只存储在一个分片中。平衡器状态为“活动”,但并非一直在运行。一旦它只运行了 5-10 秒。它显示以下错误,

谁能帮我解决它?我是 MongoDB 的新手,想通过创建分片集群来学习和测试 MongoDB 的可扩展性。

如果有助于解决问题,这里有一些更多信息:

在创建集群时,我按照以下步骤操作。

  1. 在所有机器上安装 MongoDB。
  2. 授予对分片服务器的“/data/db/”文件夹和配置服务器的“/data/configdb/”文件夹的所有权限。
  3. 启动配置服务器。[mongod --configsvr]
    (这里,配置服务器ip:172.18.109.81:27019)
  4. 启动 Mongos。[mongos --configdb 172.18.109.81:27019 --port 27020]
    (这里,mongos服务器ip:172.18.109.250:27020)
  5. 启动所有 Shard 服务器。[mongod --shardsvr]
    注意:分片服务器 => 172.18.109.46:27018 (shard0000) , 172.18.109.60:27018 (shard0001), 172.18.109.63:27018 (shard0002)
  6. 在 Mongos 机器中,打开另一个终端并运行 mongo 172.18.109.250:27020/admin
  7. 添加所有分片 [sh.addShard("172.18.109.46:27018")...]
  8. Enable Sharding for Database,使用 shardKey 定义 Shard 集合

我也尝试过使用不同的分片键(我认为,选择分片键是问题),但结果也相同。“NLA_M.Read”有一个分片键,其值介于 100 和 600 之间。我也尝试过选择散列分片键,但没有变化。

如果我遗漏了什么,请告诉我。

谢谢 :)

0 投票
1 回答
224 浏览

mongodb - 无法向mongodb添加功能

不知道什么时候开始出现问题。我发现当我为 mongodb 创建一个新函数,然后像这样运行它
db.loadServerScripts(); testFun('xxx');
时:会出现两个错误:
SyntaxError: missing } after property list src/mongo/shell/db.js:1038 ReferenceError: testFun is not defined (shell):1 但是旧函数工作正常。当我删除一个旧函数并重新创建它而不做任何更改时,它也会导致上述相同的错误。

我使用的 mongodb 版本是2.6.10.

0 投票
1 回答
654 浏览

javascript - MongoDB脚本执行存储在变量中的查询

我的 .js 脚本从包含 mongodb 查询的文件中读取,并将其填充到数组中。然后我读取了该数组并执行了查询,但它们没有被执行。下面是我的代码。

仅当我将第 12 行替换为实际查询时才有效,例如 db.coll.count()

0 投票
1 回答
87 浏览

mongodb - MongoDB Shell(版本 3.2)中的“...”

目前在我的 mongo shell 中运行以下聚合查询: db.zips.aggregate([{$group:{_id:{"state":"$state"},{population:{$sum: "$pop}}}] ),当我按下回车键时,“...”会出现一个闪烁的光标。运行需要很长时间还是希望我继续输入?

谢谢!

0 投票
1 回答
1988 浏览

mongodb - MongoDB:.mongorc.js 中定义的自定义命令

我想定义一个自定义的 Mongo shell 命令。给定.mongorc.js如下:

我得到了初始数据库的正确大写名称,但是当我切换到其他数据库时,我仍然得到初始数据库的名称而不是当前数据库的名称。

我看到.mongorc.js是在运行之前mongo运行的,这就是为什么dbuc变量已经分配了初始数据库的值 - 测试。但我更想知道无论我打开什么基础,如何获取当前数据库的名称。

0 投票
1 回答
550 浏览

mongodb - 如何在 mongodb 中使用具有 userAdmin 角色的用户登录

我在 ubuntu 14.04 上启动了mongod服务器并作为服务运行,我启动了mongo shell 并创建了一个用户。

之后,我更改了编辑mongod.conf并设置auth=true并重新启动了mongod服务器作为服务。

毕竟,当我想用​​用户testAdmin启动mongo shell时。

但我无法登录,这给了我错误。

首先,当我指定数据库学生时,为什么要尝试连接到测试?其次,我知道 mongodb 中的 userAdmin 角色不适用于使用 userAdmin 在数据库中读/写我只能管理用户角色。但是要管理其他用户,我仍然需要登录 mongo shell。

当我在 mongod.conf 中关闭身份验证时它正在工作,所以其他事情都很好,只有身份验证不起作用。

0 投票
2 回答
484 浏览

mongodb - 减慢大型文档的 MongoDB shell 输出?

我正在尝试检查大于 Windows 命令窗口的打印缓冲区的文档。对于某些查询,more 允许您输入it更多输出。有没有办法将此应用于其他命令?

例如,我可能会做db.coll.findOne()大大超过打印缓冲区的事情。我想查看尽可能多的内容,键入it,查看更多内容等。