Tag: mongodb

所有Schema的模式方法 – Mongoose方法的inheritance

我正在与Mongoose的nodejs工作,在这个时候我有不同的集合中的数据与_id像string写入的用户,我试图做一个重构,并自动生成_id。 我想在其他文件js中只有函数generateID(return _id;); 并在所有模型中实现此function,而无需在所有模型中重复写入。 这是bus.js /***********************************Bus Model**********************************/ var mongoose = require('mongoose'), merge = require('merge'), global = require('./schema/global'); /***********************************Schema******************************************/ var Schema = mongoose.Schema; var busSchema = new Schema({}); /***********************************Methods*****************************************/ var bus = mongoose.model('Bus', busSchema); /** * extend functions from global * we do this to prevent duplicate code */ merge(bus.schema.methods, global.schema.methods); module.exports = bus; 这是项目中模型文件夹上的schema文件夹中的global.js var […]

在总输出中组合不同的分组总计

现在我已经在$ project,aggregate()和$ group这个周末敲了一下头,现在是时候让我再次投入到你的仁慈之中。 我正在尝试拨打电话,回复用户的总数,按性别分组(这是比较容易的部分),并根据年龄段进行分组(这是击败了我)。 我得到它与一个小组合作: Person.aggregate([ { $match: { user_id: id } }, { $group: { _id: '$gender', total: { $sum: 1 } } } ]) .exec(function(err, result) { etc… 从那以后,它会给我多less男人,有多less女人在一个不错的输出中。 但是,如果我join第二组,似乎跳过第一个,扔第二组: Person.aggregate([ { $match: { user_id: id } }, { $group: { _id: '$gender', total: { $sum: 1 } }, $group: { _id: '$age', […]

在从UI写入数据库之前进行审阅

这更多的是关于devise方法的问题。 我有一个应用程序具有以下细节: 用户界面在Angular中 UI使用Node / Express中的api 数据库现在只是一个JSON文件。 我想从JSON文件移动到mongoDb。 我想要的是,每当有人使用UI对数据库进行更改时,我想在数据库更新之前查看这些更改。 达到这个目标的最好方法是什么? 这对我来说更容易与JSON文件,因为我在git上创build一个拉请求,我会审查所有的更改,然后更新。 我曾经想过的事情: 让UI写入一个单独的克隆集合(表),然后检查它们并相应地更新主集合。 不知道这是否是正确的做法。

在MongoDB中模型的Array中计算唯一的值

在许多模型的数组中,只计算唯一值的最好方法是什么? 假设我的模型是这样的: { myKey: [ "idnumber1000", "idnumber1001", "idnumber1005", ] } 而且我有大约10.000个,但是myKey值不同。 我想知道,对于一组给定的集合,我有多less不同的值。 我最初的想法是加载内存中的所有模型,然后,用Node.js计算。 但是由于我的数据集可能会增长很多(大约30-50K),所以会在我的机器上消耗大量内存。 这是唯一的方法去做,还是有另一个? 我使用Mongoose和Node.js

如何通过使用Mongoose查询子文档来查找父文档?

在下面的示例中,如何查找特定成员标识具有Membership (子文档)的Account (父级)文档? 我曾尝试使用$elemMatch和直接查询对象。 注意:两个模式都有一个删除的标志字段( dd )。 如果设置了这个字段,logging已经被删除,不应该被返回: var mongoose = require('mongoose') var membershipSchema = new mongoose.Schema({ m : { type: mongoose.Schema.ObjectId, ref: 'member' }, // Member b : { type: Date, required: true }, // Begin Date e : { type: Date }, // End Date dd : { type: Date }, // Deleted […]

dynamic路由expression式中,“不能读取未定义”错误的属性“concat”

我试图通过从mongodb数据库中获取页面来使用express来在nodejs中dynamic创build路由。 我在routes.js代码是这样的: module.exports = function(app, passport) { Page.find(function(err,leroutedata){ leroutedata.forEach(function(page) { var path = page.path; app.get(path,function(req, res){ res.render('layout.ejs', { data : page }); }); }); }); }; 但是我得到这个错误: (…)/node_modules/path-to-regexp/index.js:34 .concat(strict ? '' : '/?') ^ TypeError: Cannot read property 'concat' of undefined 任何ideea什么可以导致它?

如何在加载后在mongoose子文档中使用Schema方法

在mongoose中我有以下scheme var Schema = mongoose.Schema; var CellSchema = new Schema({ foo: Number, }); CellSchema.methods.fooMethod= function(){ return 'hello'; }; var GameSchema = new Schema({ field: [CellSchema] }); 如果创build新的文件如: var cell = new CellModel({foo: 2}) var game = new GameModel(); game.field.push(cell); game.field[0].fooMethod(); 这是正确的工作。 但是如果你运行这个代码: GameModel.findOne({}, function(err, game) { console.log(game); game.field[0].fooMethod() }) 我得到TypeError:game.field [0] .fooMethod不是一个函数和控制台日志是 { field: [ […]

devise一个mongoose模型

我有一个像这样的mongoose模型: roomURL:String, roomName: String, owner:String, dateCreated: { type: Date, default: Date.now}, lastUpdated: { type: Date, default: Date.now} 我需要存储访问特定房间(roomURL)的所有用户的列表。 所以,每当用户访问这个url,我需要存储他的用户名,以便我可以得到一个用户有权访问的所有板的列表。 什么是最好的方法来做到这一点,最好使用mongoose? 我需要另一个模型吗?

mongoose文本search不返回结果

我正在尝试在组合索引上创build一个简单的文本search。 这是我的mongoose模型: // models/user.js // load the things we need var mongoose = require('mongoose'); // define the schema for our user model var itemSchema = mongoose.Schema({ globalinfo : { ownerobjectid : String, name : String, desc : String, startdate : Date, enddate : Date, price : Number, status : String, statuscss : String, dateadded : […]

如何在ejs中发送对象作为函数参数

如何在ejs中将对象作为paremeter发送。 当我尝试发送testing函数的参数中的对象,它打印未定义。 </tr> <% userlist.forEach(function(usr){ %> <tr> <td><input readonly type="text" value="<%= usr.name %>"></td> <td><input readonly type="text" value="<%= usr.email %>"></td> <td style="cursor:pointer"> <i title="edit data" style="padding-right:18px" class="fa fa-pencil"></i> <i title="delete" ng-click='test(<%= usr %>)' class="fa fa-trash"></i></td> </tr> <% }) %> <% } %>