Questions tagged «mongodb»

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

7
Redis比mongoDB快多少?
人们普遍认为Redis的速度非常快,而mongoDB的速度也很快。但是,我很难找到比较两者结果的实际数字。给定类似的配置,功能和操作(并可能显示因不同的配置和操作而导致的因素变化)等,Redis是10倍速,2倍速,5倍速吗? 我只说性能。我知道mongoDB是另一种工具,具有更丰富的功能集。这不是“ MongoDB 比Redis 更好 ”的争论。我问的是,Redis在性能上胜过mongoDB? 在这一点上,即使是便宜的基准也比没有基准要好。

3
如何查询嵌套对象?
使用嵌套对象表示法查询mongoDB时遇到问题: db.messages.find( { headers : { From: "reservations@marriott.com" } } ).count() 0 db.messages.find( { 'headers.From': "reservations@marriott.com" } ).count() 5 我看不到我在做什么错。我期望嵌套对象表示法返回与点表示法查询相同的结果。我哪里错了?

3
MongoDB-更新文档数组中的对象(嵌套更新)
假设我们有以下收藏,对此我有几个疑问: { "_id" : ObjectId("4faaba123412d654fe83hg876"), "user_id" : 123456, "total" : 100, "items" : [ { "item_name" : "my_item_one", "price" : 20 }, { "item_name" : "my_item_two", "price" : 50 }, { "item_name" : "my_item_three", "price" : 30 } ] } 1-我想增加“ item_name”:“ my_item_two”的价格,如果不存在,则应将其附加到“ items”数组中。 2-如何同时更新两个字段。例如,增加“ my_item_three”的价格,同时增加“ total”(具有相同的值)。 我更喜欢在MongoDB上执行此操作,否则,我必须在客户端(Python)中加载文档并构造更新的文档,并用MongoDB中的现有文档替换它。 更新 这是我尝试过的并且如果对象存在则可以正常工作: …
204 mongodb 


11
如何收听对MongoDB集合的更改?
我正在创建一种以MongoDB作为数据存储的后台作业队列系统。在催生工作者来处理作业之前,如何“监听” MongoDB集合的插入内容?我是否需要每隔几秒钟轮询一次,以查看自上次以来是否有任何更改,或者我的脚本有什么方法可以等待插入发生?这是我正在从事的一个PHP项目,但可以使用Ruby或与语言无关的方式随意回答。
200 mongodb 

13
MongoDB-管理员用户未经授权
我正在尝试向我的MongoDB添加授权。 我正在Linux上使用MongoDB 2.6.1进行所有操作。 我的mongod.conf文件采用旧的兼容格式 (这是安装过程中附带的格式)。 1)我按照(3)所述创建了管理员用户 http://docs.mongodb.org/manual/tutorial/add-user-administrator/ 2)然后我通过取消注释此行来编辑mongod.conf auth = true 3)最后,我重新启动了mongod服务,并尝试使用以下方式登录: /usr/bin/mongo localhost:27017/admin -u sa -p pwd 4)我可以连接,但连接时会说。 MongoDB shell version: 2.6.1 connecting to: localhost:27017/admin Welcome to the MongoDB shell! The current date/time is: Thu May 29 2014 17:47:16 GMT-0400 (EDT) Error while trying to show server startup warnings: …
200 mongodb  admin 

7
比较猫鼬_id和字符串
我有一个node.js应用程序,它可以提取一些数据并将其粘贴到对象中,如下所示: var results = new Object(); User.findOne(query, function(err, u) { results.userId = u._id; } 当我基于存储的ID执行if / then时,比较永远不会成立: if (results.userId == AnotherMongoDocument._id) { console.log('This is never true'); } 当我执行两个ID的console.log时,它们完全匹配: User id: 4fc67871349bb7bf6a000002 AnotherMongoDocument id: 4fc67871349bb7bf6a000002 我以为这是某种数据类型问题,但是我不确定如何将results.userId转换为数据类型,从而导致上述比较正确,而我的外包大脑(又名Google)无法提供帮助。

17
如何部分更新MongoDB中的对象,以便新对象将与现有对象重叠/合并
鉴于此文档保存在MongoDB中 { _id : ..., some_key: { param1 : "val1", param2 : "val2", param3 : "val3" } } 对新信息的对象param2,并param3从外面的世界需要保存 var new_info = { param2 : "val2_new", param3 : "val3_new" }; 我想将新字段合并/覆盖在对象的现有状态上,以便不会删除param1 这样做 db.collection.update( { _id:...} , { $set: { some_key : new_info } } 将导致MongoDB完全按照要求执行操作,并将some_key设置为该值。取代旧的。 { _id : ..., some_key: …

21
如何使用mongoimport导入csv
尝试导入包含联系信息的CSV: Name,Address,City,State,ZIP Jane Doe,123 Main St,Whereverville,CA,90210 John Doe,555 Broadway Ave,New York,NY,10010 运行此命令似乎不会向数据库添加任何文档: $ mongoimport -d mydb -c things --type csv --file locations.csv --headerline Trace说imported 1 objects,但是启动Mongo shell并运行db.things.find()不会显示任何新文档。 我想念什么?

10
在mongodb中使用ISODate进行日期查询似乎不起作用
我似乎甚至无法获得最基本的日期查询来在MongoDB中工作。使用看起来像这样的文档: { "_id" : "foobar/201310", "ap" : "foobar", "dt" : ISODate("2013-10-01T00:00:00.000Z"), "tl" : 375439 } 和一个查询,看起来像这样: { "dt" : { "$gte" : { "$date" : "2013-10-01T00:00:00.000Z" } } } 我从执行中得到0个结果: db.mycollection.find({ "dt" : { "$gte" : { "$date" : "2013-10-01T00:00:00.000Z"}} }) 知道为什么这行不通吗? 作为参考,此查询由Spring的MongoTemplate生成,因此我无法直接控制最终发送给MongoDB的查询。 (PS) > db.version() 2.4.7 谢谢!
189 json  mongodb  bson  isodate 

28
无法创建/打开锁定文件:/data/mongod.lock errno:13权限被拒绝
如何让mongo在ec2上使用已安装的驱动器?我真的不明白。我在ec2上连接了一个以root用户身份格式化驱动器的卷,并以root用户身份启动,但是以root用户身份我无法访问?我正在Ubuntu 12.04上运行。没有其他mongo在运行 我看到mongo在/ data中创建了一个'db'目录,即/ data / db cd / ls -al drwxr-xr-x 4 root root 4096 Mar 5 16:28 data cd /data ls -al total 28 drwxr-xr-x 4 root root 4096 Mar 5 16:28 . drwxr-xr-x 24 root root 4096 Mar 5 16:28 .. drwxr-xr-x 2 root root 4096 Mar …
187 mongodb 

4
是否可以在两个不同的集合中生成重复的Mongo ObjectId?
是否可以为两个不同集合中的文档生成完全相同的Mongo ObjectId?我意识到这绝对不可能,但是有可能吗? 无需太具体,我想问的原因是我正在开发的应用程序向我们展示了当选官员的公开资料,他们希望将其转换为我们网站的正式用户。我们为用户和当前不是我们网站成员的民选官员提供单独的收藏集。还有其他各种文档,其中包含有关民选官员的各种数据,所有数据都使用其民选官员ObjectId映射回该人。 创建帐户后,我们仍将突出显示与当选官员相关的数据,但它们现在也是用户集合的一部分,带有相应的用户ObjectId,以将其个人资料映射到与我们的应用程序的交互。 几个月前,我们已经开始将应用程序从MySql转换为Mongo,而在过渡期间,我们为这两种数据类型存储了旧版MySql ID,现在我们也开始在用户中存储当选的官方Mongo ObjectId。文档以映射回民选的官方数据。 我正在考虑仅将新用户ObjectId指定为先前的当选官方ObjectId,以简化操作,但想确保与任何现有用户ObjectId都不冲突。 感谢您的见解。 编辑:发布此问题后不久,我意识到我提出的解决方案不是一个好主意。最好保留我们现有的当前模式,并仅链接到用户文档中当选的官方“ _id”。
187 mongodb  database  nosql 

6
MongoDB的命名约定是什么?
是否有针对MongoDB实体的一组首选命名约定,例如数据库,集合,字段名称? 我在沿着这些思路思考: 数据库:由目的(单数单词)组成,以“ db”结尾–所有小写:imagedb,resumedb,memberdb等。 收藏:小写复数:图片,履历, 文档字段:lowerCamelCase,例如memberFirstName,fileName等

6
通过猫鼬将项目推入mongo数组
我一直在寻找答案,但我确定我迷失了正确的词来描述我的追求。 基本上,我有一个名为“ people”的mongodb集合,该集合的架构如下: people: { name: String, friends: [{firstName: String, lastName: String}] } 现在,我有一个非常基本的express应用程序,该应用程序连接到数据库并使用空的Friends数组成功创建了“ people”。 在应用程序的次要位置,有一个添加好友的表单。该表单采用firstName和lastName,然后使用带有名称字段的POST来引用适当的people对象。 我很难做的是创建一个新的朋友对象,然后将其“推送”到friends数组中。 我知道,当我通过mongo控制台执行此操作时,我会使用$ push的更新功能作为查找条件之后的第二个参数,但是我似乎找不到合适的方法来使猫鼬执行此操作。 db.people.update({name: "John"}, {$push: {friends: {firstName: "Harry", lastName: "Potter"}}}); 更新: 因此,阿德里安的答案非常有帮助。以下是我为实现自己的目标所做的工作。 在我的app.js文件中,我使用 app.get('/addfriend', users.addFriend); 我的users.js文件中的哪里 exports.addFriend = function (req, res, next) { var friend = {"firstName": req.body.fName, "lastName": req.body.lName}; Users.findOneAndUpdate({name: req.user.name}, {$push: …

9
更改MongoDB数据存储目录
到目前为止,我尚未指定MongoDB数据目录,并且只有一个30 GB的主分区。 我刚花光了空间并添加了新硬盘。如何传输数据(显然在中/var/lib/mongodb/)并配置MongoDB,以使所有内容都在新磁盘上运行而不影响现有安装?

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.