Tag: mongodb

通过Mongoose将对象推入MongoDB subdoc数组

我目前有以下mongoose模型设置: var Customer = mongoose.model('Customer', { firstname : String, lastname : String, phone : String, street : String, city : String, state : String, zip : String, fixed : Boolean, readings: [Number] }); 其使用方式如下: app.post('/api/findcustomer/:customer_id/:customer_reading', function(req, res) { Customer.update({_id: req.params.customer_id}, {$push: {readings: req.params.customer_reading}}, {upsert:true}, function(err, customer){ if(err){ console.log(err); }else{ console.log("Successfully added"); } }); Customer.findOne({ _id […]

在服务器端Node.JS上倒数一次,并发送一个页面的响应

我有一个问题,我似乎无法find如何去做 – 我见过很多客户端倒计时插件,我有一个在我的应用程序 – 但是我有兴趣计数到我的服务器上的某个date,一旦这个date和时间到了,我想触发一个响应客户端一个popup页面。 现在 – 我已经尝试在倒计时.onFinishfunction在客户端做到这一点。 但是从我的理解来看,除非客户端在倒计时完成时在应用程序中,否则无法工作。 我是否正确地认为客户端脚本只在客户端进入应用程序时生成? 因此,当用户进来时,计时器已经重新启动(在login我更新计时器倒数到最近的星期一在21:00)。 在服务器上 – 我可以检查date是否已经到达,在一个函数之外,但这只会发生一次部署,是否正确? 如果我每隔一段时间检查一次,每次更新应用程序,这些时间间隔都会变得混乱,我可能会错过00:00的时间。 这是我在服务器上的想法(使用expressJS,nodeJS) var today = new Date(); var currentDay = today.getDay() + 1; var currentMonth = today.getMonth() + 1; var currentDate = today.getDate(); var currentYear = today.getFullYear(); //var date = [02, 22, 2014]; var dateTillMatch = findNearestMonday(currentDay, currentDate, currentMonth, currentYear); if […]

当mongodb插入时,节点应用程序不工作

我还在学习mongodb和node.js。 我试图插入大量的数据说80k + 100k行。 我为此创build了一个使用express.js的应用程序。 我编码的方式,一旦上传button被点击后页面redirect到另一个页面,在后台应用程序插入数据到数据库。 问题是一旦插入开始应用程序停止响应。 即使在插入应用程序完成后,将会更慢2-3分钟。 我试过这个代码 1 Fedora 14 Intel P4 2.80GHz 1.5GiB 2 Fedora 14 i3 3.20GHz 3GiB 如何避免这个问题? 它会在更好的系统上运行得更好吗? 代码来存储数据 MongoClient.connect(MONGODB_URI, function (err, database) { var collection = database.collection(collectionName); for (index = 0; index < jsonResult.length; ++index) { var obj = jsonResult[index]; for (var prop in obj) { if (headers[prop] […]

MongoDB和nodejs中的自动增量id字段(express框架)

我如何设置一个“ID”字段在MongoDB数据库与autoIncrement。 我需要唯一的数字ID。 我知道,有简单的方法,而不是计数项目…我的应用程序与nodejs和expressjs框架

将数组转换为游标

使用.toArray(foo)方法可以轻松地将游标转换为数组: var cursor = col.find({}); cursor.toArray(function (err, itemsArray) { /* do something */ }); 但是是否有可能转换itemsArray中的itemsArray ,所以我会有所有的游标函数? var newCursor = foo (itemsArray); typeof newCursor.toArray === "function" // true

MongoDB接收ETLdevise选项

当谈到MongoDB时,我是一个全新的开发者 ,但是我有过像Hbase和Accumulo这样的nosql商店的经验。 当我使用这些其他的nosql平台时,我最终编写了自己的数据摄取框架(通常是java),执行类似ETL的函数,以及内联富集。 我还没有find一个具有类似Mongofunction的工具,但也许我错过了它。 到目前为止,我有一个Logstash实例,并从多个来源收集日志,并将其作为JSON保存到磁盘。 我知道有一个用于Logstash的mongodb输出插件 ,但是它没有任何configurationlogging应该如何索引的选项(即聚合文档等)。 为了我的需要,我想为每个通过Logstash到达的事件创build多个汇总文档 – 这需要对Mongo进行一些预处理和特定的插入。 底线 – 在我build立接收工具之前(可能在Python或节点) – 是否有东西已经存在?

Node.js到MongoDB:按date查找

从Nodefinddate到MongoDB的问题: 据说MongoDB可能不是存储date对象,而是一个string,但我不知道如何检查,或者如何解决这个问题。 在我的turnys.js文件中: exports.findNeededTurnys = function(req, handler) { console.log("findNeededTurnys"); var key; //var arg0 = {$or:[{start:{$lte:new Date()}, $where: "this.users.length == this.seats"}]}; var arg0 = {start:{$lte:new Date()}}; console.log("findNeededTurnys: arg0="+JSON.stringify(arg0)); turnydb.collection('turnys', function(err, collection) { collection.find(arg0, {safe:true}, function(err, result) { if(err) console.log("findNeededTurnys: find: err="+err); console.log("findNeededTurnys: find: result="+JSON.stringify(result)); handler.handle(result); }); }); }; 日志文件显示来自MongoDB的空结果? findNeededTurnys: arg0={"start":{"$lte":"2014-03-31T10:17:48.857Z"}} findNeededTurnys: find: result={} 在Mongo中,查询工作(在添加新的Date调用者之后,因为驱动程序可能会在js console.log中将其抽象出来): […]

使用Google Feed API和Node.js订阅RSS Feed

从一个Node.js服务器,我连接到Google Feed API( https://stackoverflow.com/a/22821516/3303704 )。 但它似乎加载整个RSS源每次使用它。 因为我想跟随很多RSS提要,所以不会是可扩展的。 我怎么能RSS订阅,这是推送到我的服务器只有新的项目的RSS源,因为它们发布? 此处描述的解决scheme( http://googleajaxsearchapi.blogspot.com/2010/05/google-feed-api-now-with-instant.html )似乎不起作用… 如果它是有用的,那么我对RSS源的项目做什么是:(1)只select链接到1500字以上的文章(为了我使用Cheerio)和(2)保存这些链接到数据库(MongoDB ,用Mongoose连接到服务器)。

在本地MongoDB中自动增量

是的,你可能会认为“这是一个相当复杂的问题”,这可能确实是这样,但是经过几个小时寻找问题的答案,我没有find一个能够真正解决我的问题的答案,说实话,大多数人都是这样的。 所以我会试着做一个不同的问题,所以在这里。 有没有人实际上设法将mongo doco中描述的函数移植到mongodb本地驱动程序中? 我正在使用nodejs,我很难将其移植到本地驱动程序。 function insertDocument(doc, targetCollection) { while (1) { var cursor = targetCollection.find( {}, { _id: 1 } ).sort( { _id: -1 } ).limit(1); var seq = cursor.hasNext() ? cursor.next()._id + 1 : 1; doc._id = seq; targetCollection.insert(doc); var err = db.getLastErrorObj(); if( err && err.code ) { if( err.code == 11000 […]

nodejs / mongoose更新文件中的“多级”值/不能设置属性

我有一个“用户”集合,有一些字段(名称,名字,login名,密码…) 我想将用户名和密码保存在名为“local”的子文档中(对于本地连接,将来我可以有一个名为“facebook”或“google”的子文档…) 那么,这里是mongo中的一个文档的结构: db.User.find(){ "__v": 0, "_id": ObjectId("5342b25940bcab2d1d71e04a"), "active": true, "address": "juddegaass, 2A", "api_key": "3cead67add74395ce4d1dfcdd3ea4979", "city": "Kehlen", "country": "LU", "create_date": ISODate("2014-04-07T14:12:41.104Z"), "credit": 0, "email": "admin@company.com", "firstname": "Admin", "lastname": "Istrator", "local": { "email": "admin@company.com", "password": "$2a$08$Y7GorE3UhceNhPzvAdv7X.wDNxp80snHdng0hq9r1AePqRW1iHU5i" }, "role": "su", "uptade_date": ISODate("2014-04-07T14:12:41.104Z"), "zip": "8281" } 我有一个表单来更新用户,我的问题是当我提交这个表单。 我得到一个错误: TypeError: Cannot set property 'email' of undefined 这是我的节点用户映射器中的更新function: var toUpdate […]