草庐IT

Connect-Mongo

全部标签

mongodb - Mongo 服务器状态 - "Resident"内存

通过mongod启动Mongo后,我运行了一个耗时300秒的Mongo查询。在我的“管理员”数据库上调用db.serverStatus()显示Mongo有resident1GB内存。文档解释说“驻留”内存是Mongo使用的物理磁盘/RAM的数量。然后,我重新运行相同的查询,但耗时8秒。这次查看常驻内存,看到了5GB。我相信RAM的大幅增加有助于解释为什么查询时间从300秒缩短到8秒,但为什么常驻内存跳得如此之快?是否推荐某种类型的“预热”步骤来准备Mongo以避免300秒查询? 最佳答案 MongoDB使用操作系统的mmap功能是有

mongodb - 对大型 mongo 集合的部分文档更新 - 如何不锁定数据库?

我有一个带有集合的mongo数据库实例,其中包含大约1700万条记录。我希望更改所有1700万个文档的文档结构(在文档中添加一个新属性),这样我就不必在处理不同结构时遇到问题并使查询更易于编写。我被告知,如果我运行更新脚本来执行此操作,它将锁定整个数据库,可能会关闭我们的网站。在不发生这种情况的情况下更改文档的最简单方法是什么?(我不介意更新缓慢,只要它最终发生)我尝试做的查询是:db.history.update({type:{$exists:false}},{$set:{type:'PROGRAM'}},{multi:true}) 最佳答案

mongodb - 为集合中的每个文档生成一个新的 Mongo 对象 ID?

如何在批量更新中为每个文档创建唯一的对象ID?我试过了,db.foo.update({objectId:null},{$set:{objectId:newObjectId()}},{multi:true})但这为我提供了每个文档的相同对象ID。 最佳答案 因为您要为每个文档应用一个唯一值,所以您需要遍历您的集合并一次更新一个文档。在外壳中:db.foo.find({objectId:null}).forEach(function(doc){doc.objectId=newObjectId();db.foo.save(doc);});

mongodb - Mongo 2.6 的 meteor 操作日志

当我运行来自https://github.com/meteor/meteor/wiki/Oplog-Observe-Driver的行时我明白了WARNING:The'addUser'shellhelperisDEPRECATED.Pleaseuse'createUser'instead2014-09-05T20:51:35.483-0400Error:couldn'tadduser:"otherDBRoles"isnotavalidargumenttocreateUseratsrc/mongo/shell/db.js:1004因为它是为Mongo2.4创建的。有人设法让它在Mongo2

node.js - mongoose 查询在 node.js 中不起作用,但在 mongo shell 中有效

我正在尝试根据针对待办事项存储的“userId”获取待办事项列表。使用以下代码不返回任何行。DB.TodoTable.find({"userId":ObjectId("54c12f5f3620c07019e6b144")},function(err,todos){if(err)returnconsole.error(err);console.dir(todos);})Mongoose调试给出:Mongoose:todos.find({userId:undefined}){fields:undefined}[]但是当我在mongoshell中尝试相同的方法时,它起作用了。如下:>db.t

mongodb - 获取有关 ObjectID 时间戳 Mongo 的最新文档

我正在寻找正确的查询,该查询将根据ObjectID(同时保留时间戳)在mongo集合中获取最新插入的文档。这是明智地获取最新插入文档效率的好方法吗?谢谢。 最佳答案 从“主要”_id顺序获取ObjectId中的最后一个文档:db.collection.find().sort({"_id":-1}).limit(1);不想打破你的泡沫,但这就是这么简单。要点是ObjectId的“前面”字节实际上来自当前的“时间戳”值。连同整体内容中的其他一些“随机性”,这几乎可以确保值作为一个整体是“单调的”或“不断增加”的。

mongodb - $setIsSubset 用于 Mongo 中的常规查询

我正在寻找相当于$setIsSubsethttp://docs.mongodb.org/manual/reference/operator/aggregation/setIsSubset/的方法对于MongoDB中的常规(即不聚合)查询。我该怎么做?假设我有文件{'x':['A','B']}{'x':['A','D']}还有那个filter=['A','B',C']我想做一个find({"x":{'$setIsSubSet':filter}})并期望只返回{'x':['A','B']}似乎大多数条件命令都匹配any而不是all。我也希望它是一个子集,所以看起来$and并且$all不会将

mongodb - Chef :mongodb::user_management 失败,出现 "NameError: uninitialized constant Mongo::MongoClient"

几个月来我一直在使用mongodbcookbook成功创建用户帐户,但最近发生了一些变化,我无法弄清楚它是什么。默认配方没有错误地完成并且mongodb服务器安装成功,但是,user_management配方失败并出现错误NameError:uninitializedconstantMongo::MongoClient。这是在AWSOpsworks环境中,Chef版本为11.10,Berkshelf版本为3.2.0。伯克斯文件source"https://supermarket.chef.io"cookbook'mongodb','~>0.16.1',github:'edelight/

ruby - 指定字段值上的 Mongo Ruby 驱动程序 #find()

Ruby:ruby1.9.3p194(2012-04-20修订版35410)[x86_64-linux]RubyGem:mongo(2.0.4)我需要帮助使用他们的gem查询MongoDB数据库并更新适当的字段。编辑:我正在尝试遍历Mongo数据库的文档,提取这些文档中特定字段的值,并稍后在脚本中更新它们。目标在数据库中查询partner_id字段为“partner”且字段state为“provisioned”的文档,并仅返回以下值_id和config字段。在此之后,我将遍历每个文档、生成密码并更新另一个数据库。使用新生成的密码更新数据库到每个文档的config字段。我已经无计可施了,

linux - 从 bash 识别 mongo 服务器状态

我正在我们的Linux服务器上编写一个bash脚本,用于从MongoDB中提取报告。事实上,还有两个副本服务器,如果当时它是该服务器的主服务器,我应该提取报告。否则,脚本将不会提取任何内容。有没有办法从shell中获取这些信息?谢谢。 最佳答案 你必须运行一个命令来确定它是否是PRIMARY。我有一个“js”文件,其中包含:`printjson(db.isMaster().ismaster);然后在我的bash脚本中运行并执行此操作:PRIMARY=`/usr/bin/mongo${SERVERNAME}:${PORT}--quie