Tag: mongodb

了解Mongoose子文档

我正在学习mongoose。 目前我做了一些很好的事情,但我真的不明白Mongoose如何pipe理Schema之间的关系。 所以,容易的事情(我希望):我正在做一个经典的练习(我自己,因为我找不到一个很好的教程,创build超过2个模式)与3个模式: 用户,发布,评论。 用户可以创build多个Post; 用户可以创build很多评论; post属于用户。 评论属于用户和post。 我不认为这是非常难呃? 目前我可以很好地pipe理用户和邮政之间的关系。 我的unit testing返回正是我所需要的,此刻我正在使用mongo-relation ,我不知道这是不是一个好主意… it('Use should create a Post', function(done) { User.findOne({ email: 'test@email.com' }, function(err, user) { var post = { title: 'Post title', message: 'Post message', comments: [] }; user.posts.create(post, function(err, user, post) { if (err) return done(err); user.posts[0].should.equal(post._id); post.author.should.equal(user._id); // etc… done(); }); […]

节点mongo选项参数vs游标方法

我注意到了MongoDB驱动程序中的一些实例,可以通过options参数或链接方法执行游标操作,如下所示。 这些执行相同的操作,还是两者之间有一些差异(如性能特点)? 这个例子使用sort尽pipe在其他情况下也是如此(例如limit )。 首先,作为选项参数 : db.collection.find({}, {sort: {_id: 1}}) 现在,作为链接游标方法 : db.collection.find({}).sort({_id: 1})

Nodejs的MongoDB findAndModifysorting选项不起作用

问题陈述: collection.findAndModify()的sorting选项总是更新给定mongoDB文档中的最低值。 示例数据: { "State" : "Florida", "Temperature" : 83 } { "State" : "Florida", "Temperature" : 28 } { "State" : "Florida", "Temperature" : 82 } { "State" : "Any other", "Temperature" : 58 } { "State" : "Florida", "Temperature" : 33 } 需求: 添加month_high:真,与最高温度文档。 NodeJS代码: var query = { 'State': "Florida" }; var […]

如何通过filter获取所有集合名称?

最近我想用mongodb驱动程序通过filter来获取所有的集合名称。 "Admin", "Config", "Event", "event12345678901234567890123456789012", "system.indexes" 以上是所有集合的名称,但我只想显示集合,以“事件”开始,我发现文档有一个过滤参数,但文档不显示任何用法和过滤规则,所以有没有人知道如何用它?

在一个大的Mongo集合中,如何使用mongoose检索唯一的ID(或任何其他特定的属性)?

假设我有一个Person集合和一个Car集合,并且所有的人都有一辆车,Person文档存储了这个车的Id。 一路上,由于后端validation不好,一些汽车一直坚持数据库,没有任何业主。 我想删除所有这些'孤儿'车。 我的做法可能不是最优化的,但是这里有: exports.cleanOrphanCars = (req, res) -> Car.find() #find all the cars .exec(err, cars) -> return res.send(StatusMessages.ERROR.code, { error: err }) if err? carIds = cars.map (car) => #map the IDs to a new array for faster iteration return car._id Person.find() .exec(err, people) -> peoplesCarIds = (person) => return person.carId for carId in […]

NSSM不开始一项简单的服务

我有一个Windowsbatch file,我想在启动时执行,所以我已经使用NSSM创build一个服务。 start /min cmd /k mongod –dbpath "D:\weather_station\weather_data" –repair mongod –dbpath "D:\weather_station\weather_data" 我这样做,以启动我的nodejs应用程序的mongodb服务器。 我得到一个错误: Unexpected status SERVICE_PAUSED in response to START control 而在用于I / Oredirect的文件(nssm日志)中,我得到''mongod'不被识别为内部或外部命令,可操作程序或batch file。 现在这个脚本运行良好,如果我直接从窗口执行它,并安装mongod工作正常。 我不知道,为什么NSSM不会打开一个新的命令提示符并执行此服务。 这是启动mongodb服务器作为Windows服务的最好方法吗?

mongoosefindOne范围怀疑

我是新来的这个JavaScript的东西,我有一些关于mongoose'发现'范围的怀疑。 我写了下面的代码来试图理解这个问题。 下面的代码search购物集合,然后search分配给此购物的商店。 storeMap是storeId => storeObject的散列表,但是当Store.findOne范围结束时,storeMap似乎回滚到一个空的数组… var storeMap = {}; Shopping.findOne({ name: shoppingName }, function(err, shopping){ shopping.stores.forEach(function(storeId) { Store.findOne({_id: storeId}, function(err, store) { if(err) console.log(err); console.log(store); //prints out store data storeMap[storeId] = store; console.log(storeMap); //prints out store data }); console.log(storeMap); //prints out an empty array }); }); 那么,为什么我的storeMap数组正在打印一个空数组而不是一个存储数组?

在MongoDB中处理(长期)连接丢失

我正在写一个使用商店的Web应用程序。 如果客户端在30秒内没有收到响应,则认为请求已经失效,并且发生超时错误。 我试图让MongoDB做同样的事情。 例如,如果连接下降1分钟,则驱动程序将尝试重新连接并挂起客户端的请求,直到重新连接成功。 所以,像socketTimeoutMS (我设法工作)的东西在这里没有效果。 什么是最好的方式让MongoDB在N秒后对请求“放弃”? 我想要的最后一件事情是给客户端一个超时错误 – 服务器在5分钟后实际完成请求!

在AngularJS,NodeJS,MongoDB,Mongoose和ExpressJS中使用单一表单发布到多个集合

我想要一个表单发布到mongo的两个集合。 HTML看起来像什么 <form> …Field1 …Field2 …Field3 …Field4 </form> 控制器会是什么样子 app.controller….. $scope.var = {$scope.fields}….. $http post… …Field 1 & Field 2 to Mongo Collection 1 …Field 3 & Field 4 to Mongo Collection 2 基本上不需要2个独立的表单来提供2个集合。 这可能吗? 提前致谢 追

为mongodb REST API编写通用查询函数

我使用node.js表示MongoDB和Mongoose为我的应用程序创buildrestAPI。 我想知道有什么样的types来代替下面的代码更通用? 我不想一直通过所有的参数,只是在一定的时间。 大部分时间我只想通过他们的一部分。 通常在Java中,我创build这样的东西的build设者,但我不知道JavaScript的任何技巧:) exports.getMessages = function (req, res) { var from = req.query.from; var deleted = req.query.deleted; var readed = req.query.readed; if(from && deleted && readed) { Message.find({to: req.user.email, from: from, deleted: deleted, readed: readed}, function(err, messages) { if(err) { res.send(err); } res.json(messages); }) } else if(from && deleted) { Message.find({to: req.user.email, from: […]