Articles of mongodb

MongoDB在$ sails.js中找不到$

我正在用Sail.js和Waterline ORM创build一个简单的应用程序。 对于其中的一部分,我遵循NoSQL的数据透视表模式:每个用户都有一个数组, subscriptions所有subscriptions的频道。 我试图find订阅了特定频道ID的所有用户,使用以下内容: User.find({subscriptions: {$in: [req.param('channel')]}}).done(function (err, users) { /* … */ }); 不是每个编写的最美丽的代码行,但它应该工作。 问题是,事实并非如此。 users是一个空数组,而err为空。 他们查询实际执行的是,例如(使用节点检查器): { subscriptions: { '$in': [ '52fd1a033004de2d9bcb4980' ] } } 当这个相同的查询被用来通过umongo GUI“查找”用户时,它可以正常工作。 但是,执行该function时不会find用户。 和想法? 谢谢!

强制objectid在pathmongoose上的值对象对象失败

我是NodeJS和MongoDB的新手,在创build示例应用程序时遇到了以下问题 // ************ this is testusers.js file ************// var userdetails = require('userdetails'); var mongoose = require('mongoose'); var schema = mongoose.Schema; var geekDetails = new schema({ description: String, details: { type: mongoose.Schema.Types.ObjectId, ref: 'userDetails' } }); module.exports = { model: mongoose.model('geekDetails',geekDetails), schema: geekDetails }; // ************ this is user.js file ************// var mongoose = require('mongoose'); var […]

mongoDB + mongoose:为分层数据select正确的模式

我是mongoDB的新手,在一个节点项目中我使用mongoose为我的数据库创build一个模式。 我已经明白,在我的情况下,我应该使用embedded的数据,而不是通过引用。 ( http://docs.mongodb.org/manual/core/data-modeling-introduction/ ) 我需要在数据库中存储的结构是这样的: 书 | 标题 | | 章节 | | | 内容(url到一个html文件) 来自mySQL世界,我想了解noSQL数据库的概念,我想知道如何devisemongoose模式。 谢谢,

用nodejs插入mongodb

我试图插入一些数据在我的mongodb与nodejs每当套接字发射。 这里是代码: io.sockets.on( "connection",function( socket ){ socket.on( "send", function( data ) { console.log(data.name + " and the content is: " + data.content); mongodb.connect( "mongodb://127.0.0.1", function( err, db ) { if(err) throw err; var to_be_inserted = {name: data.name,content: data.content}; db.collection("chat").insert(to_be_inserted,function(err,objects){ if(err) throw err; }); }) }) }) 但是每当我去我的mongo控制台并input db.chat.find() 我无法find插入的logging。 我敢肯定,我有mongod打开,我敢肯定,套接字发射。 而且插入之前的consoloe.log确实有效。 这是我的mongo客户端 var mongodb = […]

不需要的连接到MongoDB

我有多个连接到MongoDB的问题。 我使用node.js和mongoose连接到mongo。 我简单的网页连接,执行less量查询,然后closures连接。 但是当我redirect到另一个页面,连接打开两次。 如果我重新加载/redirect页面,另一个连接打开。 我通过连接到数据库 mongoose.connection.on('connected', function () { console.log('Connected to mongo server.'); }); mongoose.connection.on('error', function (err) { console.log('Could not connect to mongo server!'); }); mongoose.connect(mongoUrl); 并断开连接 mongoose.connection.close(function(){ console.log('connection closed'); }); 日志显示,连接已closures。 但是如果我刷新页面4x,我会看到日志 Connected to mongo server. Connected to mongo server. Connected to mongo server. Connected to mongo server. 我错过了什么? 在mongodb日志中是这样的(我确信连接函数只被调用一次) Wed Feb 19 […]

使用Mongoose查找文档,父母和孩子都匹配查询

我有MongoDB的以下两个Mongoose模式: // Parent Schema var parentSchema = mongoose.Schema({ status: { type: String, required: true } child: { type: mongoose.Schema.Types.ObjectId, ref: 'Child', required: true }, … } //Child schema var childSchema = mongoose.Schema({ status: { type: String, required: true } … } 我想查找状态=已发布的所有父文档以及子文档状态=已发布的位置。 以下都没有给出预期的结果: //This returns no documents Parent.find({ 'status': 'published' }) .where({ 'child.status': 'published' }) […]

mongoose唯一:真正的预保存钩子在validation前调用钩子

据我了解,mongoose预保存挂钩在文档被插入集合之前,但在validation发生之后触发。 因此,如果一个validation失败,预保存的钩子将不会被调用。 在我的情况下,他们被称为无论: 下面这个简单的代码试图build立一个用户在注册时通过_id引用其他用户的模式。 添加预保存挂钩以自动将新用户的ID推入其引荐列表中。 所以用户注册时没有引荐 – >确定 用户b注册一个转介 – >确定 用户b2使用与b相同的电子邮件注册(不是确定的,唯一的),并且引用一个 – >应该失败,并且不应该在a.references中推送b2的ID 架构: var userSchema = new Schema({ email: {type:String, unique:true, required:true}, isVerified: {type:Boolean, default:false}, referredBy: {type:Schema.ObjectId, ref:'User'}, referred: [{type:Schema.ObjectId, ref:'User'}], }); userSchema.pre('save', function (next) { if (!this.isNew) return next(); if (!this.referredBy) return next(); User.findById(this.referredBy, function (err, doc) { if (err) return next(err); […]

Node.js MongoDb聚合总和与特定字段总和

这是我的collections[testing]。 {"_id" : "Test1", "enabled": "on", "value" : 10}, {"_id" : "Test2", "enabled": "on", "value" : 50}, {"_id" : "Test3", "enabled": "on", "value" : 10}, {"_id" : "Test4", "value" : 5}, {"_id" : "Test5", "value" : 2} 我想获得全部的价值和总价值的领域与"enabled":"on"像这样: 预期结果: [{_id:null,totalValue:77,totalEnabled:70}] 这是我迄今为止,但没有运气。 db.collection('test').aggregate({ $group: { _id: null, totalValue : { $sum: "$value" }, totalEnabled: $sum : […]

Mongo聚合与总和

我有个问题。 如何在mongo聚合模块中的特定行进行求和? 我的文档如下所示: { "_id" : "315" "city" : "Dallas", "population" : 3400, "state" : "Unknown" } 我怎样才能根据州和总数人口进行汇总? Y试过这个,但是有些错误: db.mydb.aggregate([{"$group":{"$state":"$state", "population":$sum}}])

用JSON对象更新MongoDB文档

我想更新一个MongoDB文档(使用Javascript数据库驱动程序)。 我想通过一个JSON对象,并有更新文件…像这样: Provider.prototype.updateProfile = function(username, profile, callback) { this.getCollection(function(error, profile_collection) { if( error ) callback( error ); else { profile_collection.update( {username: username}, {profile}, function(error, profile){ if( error ) callback(error); else callback(null, profile) }); } }); }; 我希望这是一个通用的function,所以如果文档结构的变化,我不必重新写。 目前我只能使用这个工作 {"$set": {x:profile.x, y:profile.y}} 在更新中,有没有人有一个通用的解决scheme,以便我可以通过任何configuration文件: profile = { …. }