Articles of mongodb

MongoDB批量插入许多文件已经存在的地方

我有一个较小的文档(大约100个),可以插入到MongoDB中。 但是他们中的许多人(可能全部,但通常是80%左右)将已经存在于DB中。 这些文档代表未来几个月即将发生的事件,而且我每两天更新一次数据库。 所以大部分事件已经在那里了。 任何人都知道(或者想猜)是否会更有效率地: 做批量更新,但与continueOnError = true,例如 db.collection.insert(myArray, {continueOnError: true}, callback) 做单独的插入,首先检查_ID是否存在? 首先做一个大的删除(像db.collection.delete({_id: $in : [array of all the IDs in my new documents] }) ,然后批量插入? 我可能会做#1,因为这是最简单的,我不认为100个文件都很大,所以它可能没关系,但如果有10,000个文件? 如果有问题,我使用node.js驱动程序在JavaScript中执行此操作。 我的背景是在Java中,exception很耗时,这就是我所要求的主要原因 – “continueOnError”选项会耗时吗? 补充:我不认为“upsert”是有道理的。 这是为了更新单个文件。 就我而言,代表即将到来的事件的单个文件没有改变。 (好吧,也许是这是另一个问题) 发生了什么是一些新的文件将被添加。

Connect-mongo替代Express 4

我正在寻找在我的快速应用程序中实现cookiestore,我跟着这个问题 适用于Express + MongoDB的最佳会话存储中间件 和 https://github.com/kcbanner/connect-mongo 对于我的Express 3.x项目,但对于Express 4,不build议使用connect中间件。 connect-mongo是什么合适的select?

AngularJS – 与mongodb的交互

我是新的MEAN堆栈,我正在尝试创build一个基本的一页应用程序。 我试图连接到MongoDB,然后列出控制器中的某个集合中的值。 但是,当我find答案时,我遇到了这个答案使用AngularJs和MongoDB / Mongoose 然后,如果你不能在angular和mongo之间使用它,那么下面的代码有什么意义? 还是有其他临时步骤使用它? var mongoose = require('mongoose'); var db = mongoose.createConnection('mongodb://localhost:3000/database'); var orderSchema = new mongoose.Schema({ routeFrom : String, routeTo : String, leaving: String }); var Order = db.model('Order', orderSchema); module.exports = Order; 编辑:我试图使用它的情况是这样的: Geek.html <div class="jumbotron text-center"> <h1>Geek City</h1> <p>{{tagline}}</p> <ul> <li ng-repeat="value in dataValues"> {{value.name}} </li> </ul> </div> GeekController […]

Mongoose toObject:{virtuals:true}

我试图学习MongoDB / Node,我注意到在一个模式中,我经常看到这样的事情: toObject: { virtuals: true } toJSON: { virtuals: true } 这两行意味着什么?

mongoose只读没有模式

我在我的node.js应用程序中使用Mongoose来模拟数据库中的两个集合,它将读取和写入。 还有两个集合只能从我的应用程序中读取(这些集合的模型正在另一个应用程序中进行维护,将写入这些集合)。 如果我需要使用mongoose访问这两个只读集合,那么我将不得不在这个应用程序中维护一个模式。 我宁愿不这样做,因为模式将被维护两次,并可能导致以后不一致。 Mongoose中的默认连接可以通过创build Mongoose.connect(dbPath) 给定一个dbPath(例如, mongodb://localhost/dbname ),我怎样才能使用Mongoose默认连接从集合的模式/模型不被我的应用程序维护读取? 或者我将不得不使用相同的本地MongoDB驱动程序?

Passport serializeUser()不会使用此authenticate()callback进行调用

使用passport.js,我这样写路由,所以我有权访问MongoDb文档userDoc 。 但是,这样做的时候… passport.serializeUser()永远不会被调用, req对象将会丢失user 。 auth.route('/auth/facebook/callback') .get(function(req, res, next) { passport.authenticate('facebook', function(err, userDoc, info) { if (err) { return next(err); } // I don't think !userDoc will ever happen because of mongo upsert if (!userDoc) { return res.redirect('/login'); } res.cookie('facebookPicUrl', userDoc.value.facebook.picture, {maxAge : 9999999, httpOnly: false, secure: false, signed: false }); res.redirect('http://localhost:9000/users') })(req, res, […]

用Mongoose自定义错误信息

所以根据mongoose文档 ,你应该能够在模式中设置一个自定义错误消息,如下所示: var breakfastSchema = new Schema({ eggs: { type: Number, min: [6, 'Too few eggs'], max: 12 }, bacon: { type: Number, required: [true, 'Why no bacon?'] } }); 所以我想做类似的事情: var emailVerificationTokenSchema = mongoose.Schema({ email: {type: String, required: true, unique: [true, "email must be unique"]}, token: {type: String, required: true}, createdAt: {type: Date, required: […]

mongoose – 不赞成mongodb@2.2.16:请升级到2.2.19或更高?

当我尝试安装mongoose时,为什么我会在下面看到这个警告信息? npm WARN弃用mongodb@2.2.16:请升级到2.2.19或更高版本 JSON: { "name": "dummy-app", "version": "0.0.0", "private": true, "scripts": { "start": "node ./bin/www" }, "dependencies": { "body-parser": "~1.15.1", "cookie-parser": "~1.4.3", "debug": "~2.2.0", "express": "~4.13.4", "pug": "~2.0.0-beta3", "morgan": "~1.7.0", "serve-favicon": "~2.3.0", "mongoose": "^4.7.6" } } 我该如何解决这个问题?

MongoDB在600k对象上执行错误,替代数据库? 优化?

我使用node.js和mongodb开始了一个新项目,在差不多两天之后,我在MongoDB中收集了大约60万个对象。 我已经注意到了对性能的巨大(负面)影响,我开始担心是否应该尽快迁移到其他数据库,或者如果我应该坚持使用Mongo并做一些(更多)优化。 基本上我存储这样的坐标: [x1] => 687 [y1] => 167 [x2] => 686 [y2] => 167 [c] => 0 [s] => 0 [m] => 1299430700312 [_id] => MongoId Object ( [$id] => 4d73bd2c82bb5926780001ec ) 没有更多…我的查询是这样的: {'$or': [ { x1: {'$gte' : 0, '$lt' : 1000 }, y1: {'$gte' : 0, '$lt' : 1000 } , { […]

Mongsert的Upsert(node.js和mongodb)

我正在学习node.js和mongodb。 我在我的应用程序中使用mongoskin模块,但我似乎无法得到“upsert”function工作。 我读过github上的(非常不透明的)mongoskin指南。 以下是我迄今为止所尝试的: // this works. there's an insert then an update. The final "x" is "XX". db.collection("stuff").insert({a:"A"}, {x:"X"}); db.collection("stuff").update({a:"A"}, {x:"XX"}); // this does NOT work. I thought it would do an upsert, but nothing. db.collection("stuff").update({b:"B"}, {y:"YY"}, true); 我如何创build“更新或插入,如果不存在”function?