Questions tagged «mongodb»

MongoDB是一个可扩展的,高性能,开源,面向文档的NoSQL数据库。它支持多种语言和应用程序开发平台。可以在https://dba.stackexchange.com上询问有关服务器管理的问题。

7
MySQL vs MongoDB 1000读取
我对MongoDb感到非常兴奋,并且最近对其进行了测试。我在MySQL中有一个名为posts的表,其中大约2000万条记录仅在名为“ id”的字段上建立索引。 我想将速度与MongoDB进行比较,然后运行了一个测试,该测试将从我们的大型数据库中随机获取并打印15条记录。我为mysql和MongoDB分别运行了约1,000次查询,但我惊讶地发现我在速度上并没有太大差异。也许MongoDB快1.1倍。真令人失望。我做错什么了吗?我知道我的测试并不完美,但是在阅读繁琐的杂物方面,MySQL与MongoDb相当。 注意: 我有双核+(2个线程)i7 cpu和4GB ram 我在MySQL上有20个分区,每个分区有1百万条记录 用于测试MongoDB的示例代码 <?php function microtime_float() { list($usec, $sec) = explode(" ", microtime()); return ((float)$usec + (float)$sec); } $time_taken = 0; $tries = 100; // connect $time_start = microtime_float(); for($i=1;$i<=$tries;$i++) { $m = new Mongo(); $db = $m->swalif; $cursor = $db->posts->find(array('id' => array('$in' => …

25
如何导出MongoDB中的所有集合?
我想通过以下命令导出MongoDB中的所有集合: mongoexport -d dbname -o Mongo.json 结果是:未 指定集合! 该手册说,如果您不指定集合,则将导出所有集合。 但是,为什么不起作用? http://docs.mongodb.org/manual/reference/mongoexport/#cmdoption-mongoexport--collection 我的MongoDB版本是2.0.6。
319 mongodb  export 




8
在MongoDB中实现数据版本控制的方法
您能否分享您的想法,如何在MongoDB中实现数据版本控制。(我已经问过有关Cassandra的类似问题。如果您有任何想法,最好是哪个数据库更好,请分享) 假设我需要在一个简单的通讯簿中对记录进行版本控制。(地址簿记录存储为平面json对象)。我希望这段历史: 将很少使用 将一次全部使用,以“时间机器”的方式呈现 一个记录不会有超过几百个的版本。历史不会过期。 我正在考虑以下方法: 创建一个新的对象集合以存储记录的历史记录或对记录的更改。它将为每个版本存储一个对象,并引用地址簿条目。这样的记录如下: { '_id':'新ID', “用户”:user_id, '时间戳':时间戳, 'address_book_id':'通讯录记录的ID' 'old_record':{'first_name':'Jon','last_name':'Doe'...} } 可以修改此方法以存储每个文档的版本数组。但这似乎是较慢的方法,没有任何优势。 将版本存储为附加到地址簿条目的序列化(JSON)对象。我不确定如何将此类对象附加到MongoDB文档。也许作为字符串数组。(以使用CouchDB的简单文档版本控制为模型)


12
如何在Node.js Web应用程序中管理MongoDB连接?
我在MongoDB中使用node-mongodb-native驱动程序来编写网站。 我对如何管理连接有一些疑问: 仅使用一个MongoDB连接就可以处理所有请求是否足够?是否存在性能问题?如果没有,是否可以设置全局连接以在整个应用程序中使用? 如果不是,在请求到达时打开一个新的连接,并在处理请求时关闭它,这会很好吗?打开和关闭连接是否昂贵? 我应该使用全局连接池吗?我听说驱动程序具有本地连接池。这是一个好选择吗? 如果使用连接池,应该使用多少个连接? 还有其他我应该注意的事情吗?

10
NoSQL(MongoDB)vs Lucene(或Solr)作为数据库
随着基于文档数据库的NoSQL运动不断发展,我最近研究了MongoDB。我已经注意到与Lucene(和Solr的用户)一样,如何将项目视为“文档”也有惊人的相似之处。 所以,问题是:为什么要在Lucene(或Solr)上使用NoSQL(MongoDB,Cassandra,CouchDB等)作为“数据库”? 我在寻找答案时(我确信其他人正在寻找)是对它们的一些深入比较。让我们一起跳过关系数据库的讨论,因为它们有不同的用途。 Lucene具有一些重要的优点,例如强大的搜索和权重系统。更不用说Solr中的方面了(是的,Solr即将集成到Lucene中,是的!)。您可以使用Lucene文档来存储ID,并像访问MongoDB一样访问文档。将其与Solr混合使用,您现在可以获得基于WebService的负载平衡解决方案。 在谈论类似的数据存储和MongoDB的可伸缩性时,您甚至可以对诸如Velocity或MemCached之类的进程外缓存提供程序进行比较。 关于MongoDB的限制使我想起使用MemCached,但是我可以使用Microsoft的Velocity,并且对MongoDB具有更多的分组和列表收集功能(我认为)。没有比在内存中缓存数据更快或可扩展的方法。甚至Lucene都有一个内存提供程序。 MongoDB(和其他)确实具有一些优势,例如易于使用它们的API。新建一个文档,创建一个ID,然后存储它。做完了 好,易于。

29
呈现基本的HTML视图?
我有一个基本的node.js应用程序,我正在尝试使用Express框架。我有一个views存放index.html文件的文件夹。但是加载网络浏览器时收到以下错误。 错误:找不到模块“ html” 下面是我的代码。 var express = require('express'); var app = express.createServer(); app.use(express.staticProvider(__dirname + '/public')); app.get('/', function(req, res) { res.render('index.html'); }); app.listen(8080, '127.0.0.1') 我在这里想念什么?

4
cursor.forEach()中的“继续”
我正在使用meteor.js和MongoDB构建应用程序,但我对cursor.forEach()有疑问。我想在每次forEach迭代的开始时检查一些条件,如果不需要对它进行操作,则跳过该元素,这样可以节省一些时间。 这是我的代码: // Fetch all objects in SomeElements collection var elementsCollection = SomeElements.find(); elementsCollection.forEach(function(element){ if (element.shouldBeProcessed == false){ // Here I would like to continue to the next element if this one // doesn't have to be processed }else{ // This part should be avoided if not neccessary doSomeLengthyOperation(); } …

12
如何在mongo控制台中按其ObjectId搜索对象?
我已经找到了针对C#和Perl的问题,但没有在本机界面中找到。我认为这可以工作: db.theColl.find( { _id: ObjectId("4ecbe7f9e8c1c9092c000027") } ) 该查询未返回任何结果。我通过db.theColl.find()抓取一个ObjectId 找到了4ecbe7f9e8c1c9092c000027 。该集合中有数千个对象。 我已经阅读了在mongodb.org网站上可以找到的所有页面,但没有找到。这是一件奇怪的事吗?对我来说似乎很正常。
265 mongodb 

10
猫鼬:findOneAndUpdate不返回更新的文档
下面是我的代码 var mongoose = require('mongoose'); mongoose.connect('mongodb://localhost/test'); var Cat = mongoose.model('Cat', { name: String, age: {type: Number, default: 20}, create: {type: Date, default: Date.now} }); Cat.findOneAndUpdate({age: 17}, {$set:{name:"Naomi"}},function(err, doc){ if(err){ console.log("Something wrong when updating data!"); } console.log(doc); }); 我的mongo数据库中已经有一些记录,我想运行此代码来更新年龄为17岁的姓名,然后在代码末尾打印结果。 但是,为什么我仍然从控制台获得相同的结果(而不是修改后的名称),但是当我转到mongo db命令行并键入“db.cats.find(); ”时。结果带有修改后的名称。 然后,我再次运行该代码,并修改了结果。 我的问题是:如果修改了数据,那么为什么在console.log时还是第一次获得原始数据。



By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.