Tag: mongodb

Mongo =获取单个文件的大小

我遇到了mongo的一个奇怪的行为,我想澄清一下… 我的要求很简单,我想在集合中获得单个文档的大小。 我find了两个可能的解 Object.bsonsize – 一些JavaScript方法,应该返回一个字节的大小 db.collection.stats() – 其中有一行“avgObjSize”,它会产生一些数据的“聚合”(平均)大小的视图。 它只是表示单个文档的平均大小。 当我只用一个文档创buildtesting集合时,两个函数都会返回不同的值。 这怎么可能? 它是否存在一些其他方法来获得mongo文档的大小? 在这里,我提供了一些我正在执行testing的代码: 我创build了新的数据库“testing”,并input简单的文件只有一个属性:types:“自动” db.test.insert({type:"auto"}) 从stats()函数调用输出: db.test.stats() : { "ns" : "test.test", "count" : 1, "size" : 40, "avgObjSize" : 40, "storageSize" : 4096, "numExtents" : 1, "nindexes" : 1, "lastExtentSize" : 4096, "paddingFactor" : 1, "systemFlags" : 1, "userFlags" : 0, "totalIndexSize" : […]

在MongoDB中克隆一个集合

我想克隆一个MongoDB集合并将其保存在具有不同名称的同一台服务器上。 因此,例如,现在我有以下集合:demo1.categories,demo1.users和demo2.users。 我想要一个与“demo1.categories”相同的“demo2.categories”。 (它只是一个不同的名字。)

如何保护MongoDB / MongoDB中的密码字段,以便在填充集合时不会在查询中返回?

假设我有两个集合/架构。 一个是带有用户名和密码字段的用户模式,然后,我有一个博客模式,在作者字段中引用了用户模式。 如果我使用mongoose做类似的事情 Blogs.findOne({…}).populate("user").exec() 我将有博客文档和用户填充,但我如何防止Mongoose / MongoDB返回密码字段? 密码字段被哈希,但不应该返回。 我知道我可以省略密码字段,并在一个简单的查询中返回其余的字段,但我怎么做与填充。 另外,有没有优雅的方式来做到这一点? 此外,在某些情况下,我确实需要获取密码字段,例如当用户想要login或更改密码。

保持打开一个MongoDB数据库连接

在使用MongoDB的许多介绍性例子中,您会看到如下所示的代码: var MongoClient = require('mongodb').MongoClient; MongoClient.connect("mongodb://localhost:port/adatabase", function(err, db) { /* Some operation… CRUD, etc. */ db.close(); }); 如果MongoDB与其他数据库系统一样, open和close操作通常在时间上是昂贵的。 所以,我的问题是这样的:简单地执行MongoClient.connect("…一次,将返回的值赋给某个​​模块全局,模块中的各种function执行各种数据库相关的工作(将文档插入集合,更新文档等等),当它们被应用程序的其他部分调用时(并因此重新使用该db值),然后,当应用程序完成时,只有这样才能close 。 换句话说, open和close只需要一次 – 并不是每次你需要去做一些与数据库相关的操作。 而且,在最初open\connect时返回的db对象是重复使用的,只有在实际完成所有与数据库相关的工作时,才可以在最后处理它。 很明显,因为所有的I / O都是asynchronous的,所以在close之前你要确保最后的数据库操作在完成之前完成。 似乎这应该是好的,但我想仔细检查,以防万一我缺less的东西,因为我是新来的MongoDB。 谢谢!

在_id上的mongodbsorting顺序

我不知道如何mongodb比较“_id”字段进行查询时如下所示: db.data.find({"_id":{$gt:ObjectId("502aa46c0674d23e3cee6152")}}).sort({"_id":1}).limit(10); 它纯粹是基于id的时间戳部分?

你可以在Mongo中为$ addToSet指定一个键吗?

我有一个文件: { 'profile_set' : [ { 'name' : 'nick', 'options' : 0 }, { 'name' : 'joe', 'options' : 2 }, { 'name' : 'burt', 'options' : 1 } ] } 如果名称不存在(无论选项是否存在),还想向profile_set集添加一个新文档。 所以在这个例子中,如果我试图添加: {'name' : 'matt', 'options' : 0} 它应该添加它,但添加 {'name' : 'nick', 'options' : 2} 应该什么都不做,因为即使option不同,文档已经以名称nick存在。 蒙戈似乎与整个元素相匹配,我最终检查是否是相同的,我结束了 profile_set containing [{'name' : 'nick', 'options' : […]

什么是MongoDB的默认数据库path?

我得到了关于dbpath (/data/db/) does not exist ,但是/etc/mongodb.conf命名为dbpath = /var/lib/mongodb. 那么,哪个是MongoDB的默认dbpath?

MongoDB存储过程等效

我有一个包含商店列表的大型CSV文件,其中一个字段是ZipCode。 我有一个名为ZipCodes的单独的MongoDB数据库,它存储任何给定的邮政编码的经度和纬度。 在SQL Server中,我将执行一个名为InsertStore的存储过程,它将在ZipCodes表上查找对应的经度和纬度,并将数据插入到Stores表中。 MongoDB中的存储过程的概念是否与此类似? 基本上,对于每一个插入,我需要查看该商店的经度和纬度,并保存。 我对Map / Reduce的概念不太熟悉,但是在这里呢? 谢谢!

mongoError:拓扑被破坏

我有一个使用Restify和Mongoose在node.js中构build的REST服务,以及一个带有大约30,000个常规大小文档的集合的mongoDB。 我有我的节点服务通过pmx和pm2运行。 昨天突然,节点开始用“MongoError:Topology被摧毁”的消息来剔除错误,仅此而已。 我不知道这是什么意思,什么可能触发这个。 谷歌search这个时候也没有多less东西可以find。 所以我想我会在这里问。 今天重新启动节点服务后,错误停止进来。我也有其中一个运行在生产中,它吓到我,这可能会发生在任何给定的时间的设置运行在那里非常关键的一部分… 我正在使用提到的软件包的以下版本: mongoose:4.0.3 restify:3.0.3 节点:0.10.25

访问meteor生产数据库

要检查blah.meteor.com (生产)数据库中的blah.meteor.com我认为我们会做: meteor mongo –url http://blah.meteor.com/ 但是我得到一个URI: mongodb://client:984dae4c-04fb-c8bb-68f6-ed83602435cc@skybreak.member1.mongolayer.com:27017/blah_meteor_com 我将如何使用这个URI来访问数据库?