Articles of mongodb

mongoosesorting

我有sorting显示数据的问题。 这是我的查询, Activity.find({"user_id": sesUser._id}, {}, {offset: 0, limit : 5, sort:{createdAt:1}}, function (e,a){ … }); 我有关于252长度的数据,而我的最新数据是2015年6月9日。如果我使用这个查询,我只从2015年6月5日/上周数据获取数据,而不是获取最新数据,但是如果我不使用sorting,出现。 我已经使用下面的查询,但结果是一样的。 Activity.find({"user_id" : sesUser._id}).sort("createdAt").exec(function(err,a){ … }); 任何帮助? 我正在使用Mongoose v3 – 编辑 – 这是我的活动架构/模型 var mongoose = require('mongoose'); var Activity = mongoose.Schema({ sender_id : {type: String, required: true }, user_id : {type: String, required: true }, product_id : {type: String, […]

callback()节点Js

我对这个程序很困惑。 我通过Brad Dayley购买了一本名为“Node JS,MongoDB和AngularJS Web Development”的书。 我find了一个程序来演示一个叫做闭包的东西,这个程序就是一个例子。 这只是该计划的第一部分。 function logCar(logMsg, callback){ process.nextTick(function(){ callback(logMsg); }); } var cars = ["Ferrari", "Porsche", "Bugatti"]; for(var idx in cars){ var message = "Saw a " + cars[idx]; logCar(message, function(){ console.log("Normal Callback: " + message); }) } 我一直在试图弄清楚这个程序如何运行整整一个小时,但我不知道什么是callback(logMsg)的function。 我知道这可能是一个非常基本的问题,但是我无法把它包围起来。

如何在MongoDB v3.0.5中创build一个用户

我需要在MongoDB中为我的数据库创build一个用户,但似乎我无法使它工作。 我已经在我的Windows 7机器上安装了mongoDb v3.0.5。 根据这篇文章 ,我连接到我的mongo实例使用: mongo -u siteUserAdmin -p password 然后我通过创build第一个用户: use admin db.createUser( { user: "siteUserAdmin", pwd: "password", roles: [ { role: "userAdminAnyDatabase", db: "admin" } ] } ) 然后我在exampleDb上为我的nodejs应用程序创build了一个用户: use admin db.createUser( { user: "myUser", pwd: "123456", roles: [ { role: "readWrite", db: "exampleDb" } ] } ) 最后在我的nodejs应用程序中,当我尝试使用此连接string连接到我的mongo实例时: var connString = […]

如何在MongoDB中recursion地遍历嵌套的文档

我试图遍历MongoDB模型中的第n个节点。 这是我的用户模型。 用户模型 var UserSchema = new Schema({ firstname : { type: String}, parents:[{type: mongoose.Schema.Types.ObjectId, ref: 'User' }], children:[{type: mongoose.Schema.Types.ObjectId, ref: 'User' }], partner:[{type: mongoose.Schema.Types.ObjectId, ref: 'User' }], sibling:[{type: mongoose.Schema.Types.ObjectId, ref: 'User' }], }); 我不知道如何从这个模型中生成一个类似于结构的树,关于如何实现这个的任何想法?,我使用Mongoose作为模型,并且尝试了深层树和填充没有成功,因为它只适用于第一级。 提前致谢。

简单的方法来增加任何更新查询的Mongoose文档版本?

我想开始利用Mongoose文档版本控制(__v key)。 我有一个问题,实际上增加版本的价值,然后我发现你必须添加this.increment()执行查询时。 有没有办法自动递增? 现在,我只是把它添加到前置中间件中进行更新types的查询: module.exports = Mongoose => { const Schema = Mongoose.Schema const modelSchema = new Schema( { name: Schema.Types.String, description: Schema.Types.String } ) // Any middleware that needs to be fired off for any/all update-type queries _.forEach( [ 'save', 'update', 'findOneAndUpdate' ], query => { // Increment the Mongoose (__v)ersion for any […]

通过_idfindmongoose

我有一个简单的findById与mongoose的麻烦。 确认该项目存在于数据库中 db.getCollection('stories').find({_id:'572f16439c0d3ffe0bc084a4'}) mongoose Story.findById(topic.storyId, function(err, res) { logger.info("res", res); assert.isNotNull(res); }); 不会find它。 我也尝试转换到mongoId,仍然无法find(即使mongoose应该为你做这个) var mid = mongoose.Types.ObjectId(storyId); let story = await Story.findOne({_id: mid}).exec(); 我实际上是用这个打字稿,所以等待。 我也尝试了Story.findById(id)方法,仍然无法find。 是否有一些简单的_id字段查找项目? _id必须在Schema中吗? (文档说不) 我可以通过架构中的其他值find,只是_id不能使用… 更新:我写了一个简短的testing。 describe("StoryConvert", function() { it("should read a list of topics", async function test() { let topics = await Topic.find({}); for (let i = 0; i […]

mongoose – this.find()不存在

在我的模型中,我试图做一个静态的getUserByToken方法。 但是,如果我像文档中那样做的话,我就可以了 this.find is not a function 我的代码如下所示: 'use strict'; const mongoose = require('mongoose'); const Schema = mongoose.Schema; const schema = new Schema({ mail: { type: String, required: true, validate: { validator: (mail) => { return /^[-a-z0-9~!$%^&*_=+}{\'?]+(\.[-a-z0-9~!$%^&*_=+}{\'?]+)*@([a-z0-9_][-a-z0-9_]*(\.[-a-z0-9_]+)*\.(aero|arpa|biz|com|coop|edu|gov|info|int|mil|museum|name|net|org|pro|travel|mobi|[az][az])|([0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}))(:[0-9]{1,5})?$/i.test(mail); } } }, birthDate: { type: Date, required: true, max: Date.now, min: new Date('1896-06-30') }, password: { type: […]

使用自定义的ObjectId并避免Mongoose中的重复条目

我通过node.js中的外部API获取JSON对象,并希望将它们存储在MongoDB中。 我定义了这样一个模型: var Product = new Schema({ id: ObjectId, name: String}); 现在我试图存储一个对象: JSONProduct = { id: 1234, name: 'The Foo Bar' }; product = new Product(JSONProduct); product.save(); 该对象在“products”集合中保存得很好,但是来自JSONProduct的id被MongoDB创build的值replace: { "id" : ObjectId("119894980274616772006500"), "name" : "The Foo Bar" } 为什么我想要使用我的产品ID在MongoDB创build一个主要的原因是,我想要防止产品的重复条目。 我通过外部API(包括已经存在的API)的cronjob触发调用来获取JSON Product对象。 也许有另外一个更好的方法来做到这一点?

NodeJs性能问题

我正在使用NodeJs构build一个实时统计应用程序。 对于原型,我在RackSpace服务器中使用了AMD Opteron四核处理器,使用Cluster NodeJs( http://learnboost.github.com/cluster/ )和使用本地nodejs驱动程序的MongoDb对nodejs服务器进行testing。 基本上我已经在我的公司项目中插入了一个JS代码,为一些客户的网站提供内容。 这段代码每隔10秒钟就会“ping”我的服务器,调用一个图像并传递我在服务器端获得的参数,并在MongoDb集合中插入(或更新)参数。 在一天的“慢”时间里,我每次获得大约3000个连接(我在terminal上使用netstat -natp命令获得这些连接),使得我的集群每个核心使用大约25%(我使用“top”命令)。 但是在一个“忙碌”的时候,每次我的集群变得疯狂(每个核心使用大约80%),每次得到大约7000多个连接,而且随着时间的推移,节点退化。 这是正常的吗? 还是应该Nodejs处理这些命中更“容易”的方式? 如果我使用mongoose,性能会增加吗? 如果你对MongoDb很好奇的话,它占用了一个核心的4%,这对我来说是很好的(没有把索引用于大约50%以上,但是至less索引解决了这个性能问题)。 干劲十分感谢,干杯。 编辑: 使插入的代码如下所示:db.open(function(err,db){}); return connect.router(function(app){ app.get("/pingserver/:clientid/:event/:cachecontrol", function(req, res, next){ event:'+req.params.event + ', cachecontrol:' + req.params.cachecontrol); var timestamp = new Date(); switch(req.params.event) { case 'load': var params = url.parse(req.url, true).query; db.collection('clientsessions', function(err, collection) { try { var client = { id: […]

在Mongodb中存储图像为Nodejs提供服务

我知道Mongodb可以用两种方式存储图像。 在一个常规的文件中,将图像存储为二进制文件 通过Gridfs来pipe理更大的图像。 为了简单起见,因为我打算服务器的图像很小,我会select1。 为了将图像提供给浏览器,我使用了nodejs。 我的问题是这将是多么困难? 如何将二进制数据转换为浏览器可以理解的实际图像? 涉及什么types的编码? 你能指点我在网上其他地方的教程/例子吗? 顺便说一句,我知道这可能不是一个好主意,因为性能的原因,我计划caching一次服务的图像。 我只是想避免文件系统。