Articles of mongodb

mongoose,通过填充字段sorting查询

据我所知,可以用Mongoose( source )对填充的文档进行sorting。 我正在寻找一种方法来sorting一个或多个填充字段的查询。 考虑这两个mongoose模式: var Wizard = new Schema({ name : { type: String } , spells : { [{ type: Schema.ObjectId, ref: 'Spell' }] } }); var Spell = new Schema({ name : { type: String } , damages : { type: Number } }); 示例JSON: [{ name: 'Gandalf', spells: [{ name: 'Fireball', […]

MEAN栈上login系统的体系结构?

我正在MEAN堆栈(MongoDB,Express,AngularJS和node.js)上开发Web应用程序。 我正在开发一个login系统,并且还会保护一些Angular路由,以便只有login用户才能访问它们。 我正在想办法解决这个问题的最佳方式。 我正在考虑当前的工作stream程: 用户通过AngularJS表单login,该表单将http POST发送到Express端点。 端点根据数据库validation用户,并使用OAuth令牌和cookie进行响应。 两者都存储在mongo数据库中供以后validation。 一旦AngularJS收到login响应,它将使用ng-cookies存储收到的cookie,并将OAuth令牌存储在用户服务中。 现在,每当AngularJS中的路由发生变化时,用户服务将通过将它与mongo数据库中的cookie进行比较来确保cookie仍然是合法的(这将是使用Angular的解决scheme进行的API调用…是否会创build一个明显的落后?) 当用户点击“注销”或Cookie过期时,Cookie和OAuth令牌都将从数据库中删除,并且不再有效。 这种方法有意义吗? 它是否安全,执行起来会相对有效还是快?

当从JavaScript运行MongoDB命令时,评论代码被执行

Mongo.exe尝试在我的JavaScript文件中执行注释行? 我在JavaScript文件中有一组MongoDB Shell命令。 use test; /* var categories = []; var sum = 0; var category = { _id: "", num: 0 }; var cur = db.itemdata.aggregate( [ { $group: { _id: "$category" , num : {$sum: 1 } }}, { $sort: {"_id":1 }} ]).toArray(); for(var i=0; i < cur.length; i++){ sum += cur[i].num; categories.push(cur[i]); […]

可靠地重新连接到MongoDB

更新:我在驱动程序上使用2.1版本,对3.2 我有一个使用MongoDB的节点应用程序。 我遇到的问题是,如果MongoDB服务器出于任何原因closures,应用程序不会重新连接。 为了做到这一点,我在这个官方教程中的代码基础上进行testing。 var MongoClient = require('mongodb').MongoClient , f = require('util').format; MongoClient.connect('mongodb://localhost:27017/test', // Optional: uncomment if necessary // { db: { bufferMaxEntries: 3 } }, function(err, db) { var col = db.collection('t'); setInterval(function() { col.insert({a:1}, function(err, r) { console.log("insert") console.log(err) col.findOne({}, function(err, doc) { console.log("findOne") console.log(err) }); }) }, 1000) }); 这个想法是运行这个脚本,然后停止mongod,然后重新启动它。 那么,我们走吧: testing1:停止10秒钟 […]

使用mongoDB和node.js的最佳方式是什么?

我需要在本地以及Nodester和MongoHQ等云服务上运行带有node.js的MongoDB。 我想有最小的依赖关系,例如我现在不想真正使用Express或Mongoose。 基本上,我想尽可能“直接”运行它 我使用Macports在本地安装了Mongo,然后使用Mongojs模块从我的node.js应用程序中与它交谈。 这工作正常,在本地运行。 但是我看到Mongojs被认为包装了mongo-native模块。 这是否使Mongo的Macports安装冗余,或者是mongo-native只是一个客户端? Mongojs会通过Nodester托pipe的应用程序与MongoHQ上托pipe的数据库进行通信吗? 最后,Mongojs是一个不错的select,还是有更好的select? 我想这里有太多相互关联的东西,我感到困惑,想要解释它们是如何相互融合的,以及标准做法是什么。 对于这是值得的,这是一个个人项目,但我想公开,所以我需要它与廉价或免费托pipe服务工作。

如何从node.js以编程方式执行mongodump命令?

从node.js以编程方式执行mongodb admin / console命令的最佳方法是什么? 具体来说,我想在执行一系列插入之后使用mongodump导出一个mongodb集合。 像这样的东西: // requires and initializing stuff left out for brevity db.open(function(err, db) { if(!err) { db.collection('test', function(err, collection) { var docs = [{'hello':'doc1'}, {'hello':'doc2'}, {'hello':'doc3'}]; collection.insert(docs, {safe:true}, function(err, result) { // Execute mongodump in this callback??? }); }); } });

无法获取Mongoose.js子文档数组

我在连接到mongodb的node.js服务器上使用mongoose.js,并且有一个如下的mongoose模型 SubSchema = new Schema({ _member: {type: ObjectId, ref: 'Member'}, members: [{type: ObjectId, ref: 'Member'}], created: { type: Date, default: Date.now } }); mongoose.model('SubModel', SubSchema); MainSchema = new Schema({ _member: {type: ObjectId, ref: 'Member'}, subs: [SubSchema], members: [{type: ObjectId, ref: 'Member'}], created: { type: Date, default: Date.now } }); var MainModel mongoose.model('MainModel', MainSchema); 我用这样的命令拉 var […]

使用不是id的字段填充mongoose模型

是否有可能用一个不是_id的参考模型字段填充mongoose模型…例如用户名。 所以有点像 var personSchema = Schema({ _id : Number, name : String, age : Number, stories : { type: String, field: "username", ref: 'Story' } });

为什么MongoDB Node Driver生成实例池会破坏错误?

当我运行下面的代码时,我得到错误消息“ MongoError:服务器实例池被销毁 ”。 任何想法为什么或如何解决这个问题? var csv = require('./importer.js'); var MongoClient = require('mongodb').MongoClient; var assert = require('assert'); var ObjectId = require('mongodb').ObjectID; var url = 'mongodb://…..'; MongoClient.connect(url, function(err, db) { assert.equal(null, err); console.log("Connected correctly to server."); csv.foreach('data/airports.csv', function(airport){ db.collection('airports').insertOne(airport, function(err, result) { if(err) { console.log(err) } else { console.log("Inserted: " + airport.ident); } }); }); db.close(); });

从node.js中删除mongodb集合中的文档

我对mongoDB完全陌生,对Node.js没有经验,所以请原谅,如果下面的代码是远远不够完美的。 目标是从一个集合中删除一个文档,引用它的_id 。 删除完成(在mongo shell中检查),但是代码没有结束(运行node myscript.js没有让我的shell返回)。 如果我添加一个db.close()我得到{ [MongoError: Connection Closed By Application] name: 'MongoError' } 。 var MongoClient = require("mongodb").MongoClient; var ObjectID = require("mongodb").ObjectID; MongoClient.connect('mongodb://localhost/mochatests', function(err, db) { if (err) { console.log("error connecting"); throw err; } db.collection('contacts', {}, function(err, contacts) { if (err) { console.log("error getting collection"); throw err; } contacts.remove({_id: ObjectID("52b2f757b8116e1df2eb46ac")}, {safe: true}, function(err, […]