我注意到在将文档保存到集合时,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
我有一个集合,其中字段是字符串,但这些字符串可以有一个数值,例如:
myObject:{
examples:[
{example:"words",...},
{example:"more words",...},
{example:"111",...},
{example:"4502", ......}
...
]
...
}
如何以字符串格式查询"111"和"4502"以及任何其他数值?
我有一个多域Rails 4应用程序,其中request.domainhttp请求确定我公开给定访问者的功能.
我的应用中的每个域都应该由自己的MongoDB数据库提供服务.例如domain1.com由db_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) 我有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 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)
这段代码是否会以相同的顺序迭代文档?
我有一个集合 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) 我正在尝试使用 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,我也想知道。
这是我要执行的 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)
它没有显示任何输出。我期待在我的收藏中得到这些文件。请帮忙。提前致谢。
当我在 mongo shell 中运行以下命令时,
db.stats()
Run Code Online (Sandbox Code Playgroud)
我到了下面,这是有线的。当我检查 mongoDB 安装文件夹时,它只使用了大约 2 GB 磁盘空间?
请参阅下面的 fsTotalSize 超过 80 GB
最近在MongoDB中做一个Mini项目。我试图使用该命令找出字段的不同值db.collections.distinct(<field>)。
上面的命令检索数组内给定字段的所有不同值。但由于我有 12k 个文档,所有值都没有显示在我的控制台中。
我搜索了互联网和文档,但无法得到正确的答案。
mongo-shell ×10
mongodb ×10
javascript ×3
cat ×1
foreach ×1
mongodb-java ×1
mongoid ×1
mongoid4 ×1
performance ×1