标签: mongo-shell

为什么mongo会修剪空间?

我注意到在将文档保存到集合时,MongoDB将多个空间折叠在一起(放入一个空间).它不仅仅是前导和尾随空格,而是任何空间序列 - 只有空格,而不是所有空格(仅用空格和制表符测试).当使用Java驱动程序以及交互式mongo shell时会发生这种情况,所以我猜它是数据存储区本身的"特性".

不可否认,我不喜欢我的价值观中无关的空白,我在剥离它们的过程中发现了这一点.但是,这种行为似乎很奇怪,因为数据存储通常被期望避免"烹饪"或以其他方式更改数据,超出符合底层存储约束的最低限度.否则(未向用户/开发人员声明)可能导致数据丢失或精度降低.此外,为什么要折叠空间而不是在头部和尾部完全修剪它们 - 为什么它们会在非空间角色之间折叠呢?

    > db.test.remove()
    > db.test.save({x: "     x     \t\t\t     x     "})
    > db.test.findOne()
    { "x" : " x \t\t\t x " }
Run Code Online (Sandbox Code Playgroud)

我是否错误地启用了此功能,还是默认启用?我在JIRA上找不到任何东西.这对我来说似乎是一个错误,但也许我只是特别的.MongoDB版本2.0.2

mongodb mongodb-java mongo-shell

6
推荐指数
1
解决办法
1715
查看次数

MongoDB - 如何只选择数字字符串/检查字符串是否为mongo-shell中的数字

我有一个集合,其中字段是字符串,但这些字符串可以有一个数值,例如:

myObject:{
examples:[
         {example:"words",...},
         {example:"more words",...},
         {example:"111",...},
         {example:"4502", ......}
         ...
         ]
...
}

如何以字符串格式查询"111"和"4502"以及任何其他数值?

mongodb mongo-shell

6
推荐指数
1
解决办法
5351
查看次数

如何在使用db.collection.insert()时动态切换MongoDB数据库?

我有一个多域Rails 4应用程序,其中request.domainhttp请求确定我公开给定访问者的功能.

我的应用中的每个域都应该由自己的MongoDB数据库提供服务.例如domain1.comdb_for_domain_1等提供.

我可以在MongoDB文档中阅读有关运行时持久性的内容

Mongoid.override_database("db_for_#{request.domain}")
Run Code Online (Sandbox Code Playgroud)

使我能够动态切换数据库.

但是当我绕过Mongoid并使用mongo Shell方法db.collection.insert()时,如何保持持久性呢?我仍然会在我的应用程序中执行此操作.

答案可能在关于集合访问MongoDB文档中,但我不明白.那么如何在此操作之前/期间切换数据库?:

MyModel.collection.insert({field_1: "Value 1", field_2: "Value 2"})
Run Code Online (Sandbox Code Playgroud)

ruby-on-rails mongodb mongoid mongo-shell mongoid4

6
推荐指数
1
解决办法
817
查看次数

mongo shell cat()文件以big加载为变量at

我有javascript,我加载到mongo获取一些信息.

mongo --port=27017 script.js
Run Code Online (Sandbox Code Playgroud)

我将文件中的ObjectIds作为变量传递:

#script.js

db=connect('127.0.0.1:27017/dbname')
db.auth('user', 'pass') //get credentials


var file = cat('file_with_ids.txt');  // read the file
var objectId = file.split('\n');
for (var k =0, j = objectId.length-1; k<j; k++){
    someFunction(objectId[k])

}
Run Code Online (Sandbox Code Playgroud)

它适用于具有(500K行)的文件,但我有1.5M的文件和更多我需要处理的记录.我没有成功找到关于mongodb cat()及其内部的文档.我知道我可以将文件分成块并使用bash脚本逐个提供,但我不想走那条路.限制: 我只能使用纯JS,没有节点(本来可以更容易).我已经写了python代码来做它,它工作但python(pymonogo)重新排序文件的顺序.

有什么建议?如何在纯JS中解决这个问题?谢谢

javascript performance cat mongodb mongo-shell

6
推荐指数
0
解决办法
1219
查看次数

javascript forEach()函数如何迭代mongodb shell中的文档?

javascript forEach()函数如何在mongodb shell中工作?

处理文件的顺序是什么?

例如,假设我有两个大集合,这两个集合应该包含相同数量的文档(注意文档的结构不一定相同),我想迭代第一个并查看是否为每个文档在第一个集合中,第二个集合中有一个记录:

db.MyColl.find().forEach(
    function(aDocument) { 
        print("Checking :"+aDocument._MyId)
        var db2 = db.getSiblingDB("mySiblingDb");
        var aDocument2 = db2.MyColl.findOne({_MyId: aDocument._MyId});    
        if (aDocument2 == null) { 
           print("Missing document with _MyId: " + aDocument._MyId);
        }  
    }
);
Run Code Online (Sandbox Code Playgroud)

这段代码是否会以相同的顺序迭代文档?

javascript foreach mongodb mongo-shell

6
推荐指数
1
解决办法
332
查看次数

db.collection.remove() 不删除文档

我有一个集合 TextDocuments

/* 0 */
{
 name:"doc2",
 pages:[{
 pageNumber:"1",
 text:"This is first page text",


 },{
 pageNumber:"2",
 text:"This is second page text",


 },{
 pageNumber:"3",
 text:"This is third page text",


 }]
 }
 /* 1 */
 {
 name:"doc2",
 pages:[{
 pageNumber:"1",
 text:"This is first page text",


 },{
 pageNumber:"2",
 text:"This is second page text",


 },{
 pageNumber:"3",
 text:"This is third page text",


 }]
 }
Run Code Online (Sandbox Code Playgroud)

当我在 mongo shell 中运行以下查询时,我想从具有 name = doc2 的集合 TextDocuments 中删除文档

rohitkumar@ubuntuhost:~$ mongo
> use mydb
switched to db mydb
> db.TextDocuments.remove({"name":"doc2"})
WriteResult({ …
Run Code Online (Sandbox Code Playgroud)

mongodb mongo-shell

5
推荐指数
1
解决办法
3963
查看次数

mongodb 初始加载 - 动态构建 DBRef

我正在尝试使用 db.collections.insert 将初始数据加载到 mongodb。我有一个例子,我将插入城镇集合,然后插入邮政编码集合。邮政编码集合是指城镇集合。然而,当我编写脚本时,我不知道城镇的_id。想知道如何动态构建参考。

在下面的示例中,我需要将曼切斯特镇的 ID 填充到“未知”的位置。

db.town.insert({name:"Manchester",state:{$ref:"state", $id:"CT"},status:"NOT-SUBSCRIBED"});

db.zipcode.insert({_id:"06040", town:{$ref:"town", $id:"unkown"}});
db.zipcode.insert({_id:"06041", town:{$ref:"town", $id:"unkown"}});
db.zipcode.insert({_id:"06042", town:{$ref:"town", $id:"unkown"}});
Run Code Online (Sandbox Code Playgroud)

如果有不同的方式来加载我的初始数据而不是 db.collections.insert,我也想知道。

mongodb mongo-shell

5
推荐指数
1
解决办法
1033
查看次数

使用 mongo shell 执行 JavaScript 函数没有输出

这是我要执行的 JavaScript 函数:

var collectionCreation = function(){
  db.myFirstCollection.find();
};
collectionCreation();
Run Code Online (Sandbox Code Playgroud)

从我的命令提示符指向 bin 目录,我想执行包含上述代码的 js 文件。我想这样做:

mongo localhost:27017/myFirstDatabase G:\MongoDB\createColl.js
Run Code Online (Sandbox Code Playgroud)

它没有显示任何输出。我期待在我的收藏中得到这些文件。请帮忙。提前致谢。

javascript mongodb mongo-shell

5
推荐指数
1
解决办法
3580
查看次数

如何获取 mongo db 的实际大小?

当我在 mongo shell 中运行以下命令时,

db.stats()
Run Code Online (Sandbox Code Playgroud)

我到了下面,这是有线的。当我检查 mongoDB 安装文件夹时,它只使用了大约 2 GB 磁盘空间?

请参阅下面的 fsTotalSize 超过 80 GB

在此输入图像描述

mongodb mongo-shell

5
推荐指数
2
解决办法
2万
查看次数

如何在 MongoDB shell 中查看整个数组?

最近在MongoDB中做一个Mini项目。我试图使用该命令找出字段的不同值db.collections.distinct(<field>)

上面的命令检索数组内给定字段的所有不同值。但由于我有 12k 个文档,所有值都没有显示在我的控制台中。

这是我得到的输出..如何查看整个结果? 在此输入图像描述

我搜索了互联网和文档,但无法得到正确的答案。

mongodb mongo-shell

5
推荐指数
1
解决办法
655
查看次数