问题标签 [mongo-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 回答
4460 浏览

mongodb - mongoDb中键值的顺序

蒙哥代码:

db.temperature.insert({"x":3,"y":4});

db.temperature.find();

输出 {“_id”:ObjectId(“52b418fb132c1f3236831447”),“y”:4,“x”:3}

请帮助我理解为什么在我的情况下(上图)即使插入订单不同,find 方法也会先显示 Y 值,然后再显示 x 值。

感谢任何帮助。

0 投票
4 回答
18318 浏览

mongodb - 保存 MongoDB 查询的结果

在 mongo shell 中进行研究时,我经常编写非常复杂的查询并希望将结果存储在其他集合中。我知道这样做的方法.forEach()

db.documents.find(query).forEach(function(d){db.results.insert(d)})

但是每次写这些东西有点乏味。有没有更清洁的方法?我希望语法类似于db.documents.find(query).dumpTo('collectionName').

0 投票
1 回答
567 浏览

performance - 如何在 mongo shell 中停用安全模式?

简短的问题是标题:我使用我的 mongo Shell,默认情况下处于安全模式,我希望通过停用此行为来获得更好的性能。

对于那些愿意了解上下文的人的长问题: 我正在处理大量数据,例如

和其他一些字段,大约有 250M 的文档(索引权重为 36Go 的整个数据库)。我想在真正的 ISODATE 字段中转换日期。我搜索了一下如何进行更新查询,例如

但没有找到如何使这项工作,并决定自己制作一个脚本,一个接一个地获取文档并进行更新以设置一个以新日期(字符串日期)作为其值的新字段。查询使用 _id,因此使用默认索引。

问题是它需要很长时间。我已经发现,如果我在创建数据库时插入了空日期对象,我现在将获得更好的性能,因为添加新字段时会出现数据重定位问题。我还在相关字段上设置了一个索引,以逐块处理数据库。最后,我在服务器和我的工作站上运行了几个并发的 mongo 客户端,以确保限制因素是数据库锁的可用性,而不是任何其他因素,如 cpu 或网络成本。

我用 mongotop、mongostats 和 web 监控界面监控了整个事情,确认写锁占用了 70% 的时间。我有点失望 mongodb 没有更精确的写锁粒度,为什么不允许在同一个集合上进行并发写操作,只要不存在干扰风险?现在我想起来了,即使在同一台服务器上,我也应该将集合分片到十几个分片上,因为每个分片上都会有单独的锁。

但是由于我现在无法对当前的数据库结构做任何事情,所以我搜索了如何提高性能以至少花费我 90% 的时间在 mongo 中编写(目前是 70%),我发现自从我运行我的脚本在默认的 mongo shell 中,每次我进行更新时,还有一个 getLastError() 之后会调用它,我不想要它,因为有 99.99% 的成功机会,即使在失败的情况下我也可以在大流程结束后仍然发出聚合请求以检索单个异常。

我认为通过停用 getLastError 调用不会获得如此多的性能,但我认为值得一试。

我查看了文档并找到了默认行为的确认,但没有找到更改它的过程。有什么建议吗?

0 投票
1 回答
1121 浏览

mongodb - 使用另一个字段的值更新 MongoDB 子文档字段

基于这个 SO question和实际上这个答案,我尝试更新子文档上的字段。

我的代码是:

如果elem.events[i]有 facebook_id 或 eventbrite_id 分别更新作为数组的 urls(出于架构原因)。

但是我得到一个

我无法真正理解。当前用户的权限很好。

0 投票
1 回答
4895 浏览

javascript - Mongo shell 中的新日期和 ISO 日期转换

我正在尝试使用某些日期条件的 mongoExport,我在这里读到日期必须是纪元格式。

问题是,

我在下面尝试过,

假设我给了 Oct-16-2013,但它返回给我“2013-11-16”。也与纪元格式相同。

你能帮忙吗,为什么将月份改为 11 ?

0 投票
1 回答
1327 浏览

arrays - MongoDB获取数组中特定键的计数

在 mongoDB 中,我们如何获取数组中特定键的计数

在上面的例子中,business 是一个数组(带有“name”和/或“rating”键)

如何获得仅存在“评级”键的业务阵列计数?

预期输出为:2

0 投票
7 回答
97630 浏览

mongodb - mongorestore 错误:不知道如何处理转储文件

我在以下路径中安装了 mongo DB c:\mongodb\bin。我已经在高级设置中配置了我的环境变量 PATH。我还运行了 mongod。当我从以下路径运行以下命令mongorestore dumpc:\hw1-1\dump时(这包含 BSON 文件),我收到此错误:

不知道如何处理转储文件

我已经参考了这个线程来检查我的路径。

0 投票
1 回答
4249 浏览

mongodb - 在 mongo DB shell 中查询后如何遍历结果对象

我有一个类似于[{_id:64,minitem:30},{},{}...]变量结果内部的 JSON 数组对象。这是聚合操作的结果,它是最低分数的投影。我需要遍历这个结果并从 DB 中删除 minvales。我无法遍历结果对象..我试过了

这似乎没有效果。DB 不变。我正在从mongoshell 中尝试这个。

0 投票
1 回答
869 浏览

mongodb - mongo shell 使用外部编辑器编辑查询:Windows 中的奇怪字符

我已将该行添加到我的 .mongorc.js 中:

当我edit q从 mongo shell 运行时,它会打开带有以下内容的记事本:

记事本截图

vim 也会发生同样的事情。编辑工作正常,即如果我删除该行并编写我需要的内容,它会正确传递给 shell。

关于如何摆脱那条线的任何想法?

0 投票
2 回答
12193 浏览

mongodb - mongodb中默认连接特定数据库

我在 linux 机器上运行 mongodb。因此,每次我从控制台(键入mongo)连接到它时,我都会得到如下信息:

然后我正在使用myDatabase(其中 myDatabase 是 99% 是相同的)。所以基本上我总是做一些不需要的工作。有没有办法配置mongo,让它myDatabase默认连接?