Tag: mongodb

Mongodb数据模型策略指导/build议

我刚刚开始与节点和mongodb,并试图了解如何最好地构造数据(来自一生的SQL)。 所以我已经结束了大部分embedded式的数据结构,我相信这些关系是合乎逻辑的,但是在兔子洞之前,我们需要一些外部的反馈信息! 这里是我提出的新的mongodb数据模型: user name (string) email (string) avatar (string) password (string) newsletter (binary) account admins user (objectId) name (string) logo (string) sub (number) stripe (string) property users user (objectId) party (number) role (number) admin (binary) name (string) ecd (date) complete (binary) activity description (string) user (objectId) time (date) task_group position (number) name (string) task […]

Sails中的模型的独特属性

我是SAILS的新手。 我有以下型号。 型号\ Company.js module.exports = { attributes: { name: { type: 'string', required: true, unique: true }, description: { type: 'string', required: true } } }; 型号\ Project.js module.exports = { attributes: { name: { type: 'string', required: true }, key: { type: 'string', required: true, unique: true }, description: { type: 'string' }, […]

独特和稀疏的模式级索引MongoDB和Mongoose

我试图创build一个模式的两个领域的索引,在MongoDB中使用Mongoose是唯一和稀疏的,如下所示: var ArraySchema = new Schema ({ user_id: {type: mongoose.Schema.Types.ObjectId, ref:'User'}, event_id: {type: mongoose.Schema.Types.ObjectId, ref:'Event'} }, {_id:false}); ListSchema.index({user_id:1, event_id:1}, {sparse:true, unique:true}); 然后将其用于用户架构中的数组中,如下所示: var User = new Schema({ arrayType1 : { type: [ArraySchema] }, arrayType2 : { type: [ArraySchema] }, arrayType3 : { type: [ArraySchema] } //More specifications for user schema… }); 但是,当试图保存没有array字段的多个用户时,重复字段会引发错误。 Mocha中的错误与此类似: array.event_id_1 dup […]

MongoDB只存储61246文档?

我对MongoDB相当陌生,并且有一些问题需要通过NodeJs将一些文档插入到我的集合中。 我有一个文件列表(都低于100kb)插入到相同的集合。 我使用以下代码: var files = walkFolder(base); var url = 'mongodb://localhost:27017/enron'; MongoClient.connect(url, function(err, db) { if (err) { throw err;} var collection = db.collection('emails'); async.each(files, function(item, callback){ var document = readEmail(item); collection.insert(document, function(err, result) { console.log(result); callback(err); }); }); }); walkFolder()创build一个文件列表, readEmail()将单个文件parsing成一个JSON对象(只是一些属性,没有embedded的文档或其他东西) 我可以执行我的程序,它运行得非常快。 但总是正好在集合中的61246个文档(通过> db.emails.find().count() ),计数不再增加。 任何想法为什么发生这种情况或如何追踪? 一些版本:MacOS 10.9.5,NodeJs 0.10.31,MongoDB驱动1.4.19,MongoDB 2.6.5

正确的方式使用.populate()mongodb Node.js

我正在尝试在我的评论部分中将每个评论附加完整的用户模型。 由于mongodb没有连接,我一直在试图找出如何使用.populate()从控制器添加用户对象。 据我所知,使用填充函数只有两件事你必须做的。 在模型中定义一个ref。 在定义了ref的字段的名称上调用.populate()。 我已经将模型中的ref定义为“用户”模型: var commentSchema = new mongoose.Schema({ author: { type: String, ref: 'User' }, description: String, commentID: String, hasParent: String, parentComment: String, timestamp: { type: Number, default: 0 }, }); 然后我试图将用户模型添加到注释对象中的作者字段: Comment .find() .populate('author') .exec(function (err, comments) { console.log(comments); }); 有没有我失踪的一步? 我希望在每个评论的作者字段中看到所有的用户对象的评论。

如何用sportsname过滤

我正在开发一个应用程序,我必须通过sportsname过滤。 我在后端使用Node.js和MongoDB。 这是我的代码: router.route('/user/:_id/explore/:sportsname') .get(function(req, res, next){ var query = Host.find(); if(req.query.sportsname){ query.where({sportsname:req.query.sportsname}); } query.exec(function(err,sportsname){ if(err) return next(err); res.json(sportsname); console.log(sportsname); }) }); 这是文件。 我想通过sportsnamesearch用户 [ { "_id":"5460e2af4ee5216f17000061", "maxplayer":"1", "minplayer":"11", "date":"10 August 2014", "venue":"google", "time":"Afternoon", "sportsname":"Lawn Tennis", "__v":0 }, { "_id":"5460ff1b4ee5216f17000065", "maxplayer":"0", "minplayer":"9", "date":"10 October 2014", "venue":"google", "time":"Early Morning", "sportsname":"Cricket", "__v":0 }, { "_id":"5461a4014ee5216f17000089", "maxplayer":"4", "minplayer":"29", […]

在两个小节mongodb中执行查询和抓取结果

我正在使用mongoose来处理我的数据库。 我有以下模型: var DeviceSchema = mongoose.Schema({ type: Number, pushId: String }); type属性可以是0或1。 我想要执行一个查询,抓取所有文档,并以下列格式检索结果: { fstType: [ { _id: "545d533e2c21b900000ad234", type: 0, pushId: "123" }, { _id: "545d533e2c21b900000ad235", type: 0, pushId: "124" }, ], sndType: [ { _id: "545d533e2c21b900000ad236", type: 1, pushId: "125" }, { _id: "545d533e2c21b900000ad237", type: 1, pushId: "126" }, ] } 那可能吗? 我想在一个单一的查询中做到这一点。 […]

使用imagemin压缩图像并存储在mongodb中

我试图检索已发布到我们的nodejs服务器的图像,压缩它,然后将其存储在mongodb中。 我正在使用imagemin它正在工作,即它可以采取传入的图像,压缩它,并将其存储到一个静态目标文件夹。 但是,我想要输出imagemin进程并将该图像存储在mongo中而不是目标文件夹中! 这是逻辑坐标中的中间件; app.use(multer({ dest : './static/uploads/', limits : {… rename : function(fieldname, filename) {…. onFileUploadComplete : function(file) { //var imagemin = new Imagemin().src(file.path).dest('./static/uploads/').use(compressionType); var imagemin = new Imagemin().src(file.path).use(compressionType); imagemin.run(function(err, files) { if (err) { return next(err); } console.log('Files optimized successfully!'); }); // DO SOME LOGIC HERE TO STORE IMAGE(S) TO MONGO } }; […]

NodeJS Express需要和启动

我正在学习NodeJS和Express,然后我坚持要求工作。 我有主文件作为server.js和另一个testing文件作为test.js。 [server.js] var express=require('express'); //Include Routes var rTest=require('./routes/test'); //Express Application COnfiguration var app=express(); var port=process.env.PORT||3000; var router=express.Router(); //Index router.get('/',function(req,res){ res.json({message:'Welcome to Index!'}); }); app.use('/api/t',rTest); //Test app.listen(port); [routes / test.js] var express=require('express'); var router=express.Router(); router.route('/') .get(function(req,res){ res.send('Now Test Running OK!'); }); module.exports=router; 代码按预期工作 – 去http://localhost:3000/api/t打印“Now ..”消息。 所以我的问题是,为什么我不是在test.js中创build快速应用程序,而肯定是从express.Router()引用路由器? 当我试图用mongoose创build一个CRUD时,这会变得更加混乱。 为什么我必须在testing路由器文件中引用mongoose模块和模式,但不必像在主server.js文件中那样build立连接。 到目前为止,我已经理解了这个require对于我使用的模块来说实际上是本地的,这实际上是有意义的,因为每次我需要在其他模块中引用依赖模块。 但是我不必在路由文件中重新build立连接,也不必在路由文件中侦听某个端口,在路由文件中使用body-parser(当我使用它的时候)。 任何指针都会有所帮助。 提前致谢。

需要从$ aggreagate小组阶段返回x个文档

如果我有一堆文件 {_id: mongoId, submittedTo: mongoId, viewCount: 2 } 如果我想返回x数量最高的viewCount为最低的文档(每个submitTo)。 如何使用mongoose/ mongodb进行聚合? 我从这个问题中了解到了$第一个使用MongoDB聚合在数字字段中返回最大值的文档,但是当您需要返回多个文档(每个$ group的_id)时,它的用例似乎无效。 到目前为止,我有 {$sort: {viewCount: -1}}; {$group : {_id: '$submittedTo'}}; 但不知道还有什么需要添加到小组赛阶段,以达到所需的效果。