Articles of mongodb

在Mongo中检查现有文档

我是Mongo的新手,并使用Mongoose作为ORM。 对于用户注册,我使用电子邮件作为唯一。 我想检查电子邮件是否已经被使用,如果没有,那么做一些事情(也许保存,也许下一个注册步骤等)。 对不起,似乎是一个简单的问题,但我还没有find答案。 除非它是“upsert”。 这意味着插入文件,即使我还没有准备好…

如何填充嵌套的Mongooseembedded式文档

我已经阅读并重新阅读了关于Mongoose中embedded和链接文档的几篇文章。 根据我所阅读的内容,我得出结论,最好是具有类似于以下的模式结构: var CategoriesSchema = new Schema({ year : {type: Number, index: true}, make : {type: String, index: true}, model : {type: String, index: true}, body : {type: String, index: true} }); var ColorsSchema = new Schema({ name : String, id : String, surcharge : Number }); var MaterialsSchema = new Schema({ name : {type: […]

NodeJS – 如何发送一个variables嵌套callback? (MongoDB查找查询)

我想在另一个结果集中使用find查询的结果集。 我无法用英语很好地解释这种情况。 我会尝试使用一些代码。 People.find( { name: 'John'}, function( error, allJohns ){ for( var i in allJohns ){ var currentJohn = allJohns[i]; Animals.find( { name: allJohns[i].petName }, allJohnsPets ){ var t = 1; for( var j in allJohnsPets ){ console.log( "PET NUMBER ", t, " = " currentJohn.name, currentJohn.surname, allJohnsPets[j].name ); t++; } } } }); […]

mongoosedate格式

目前有一个问题从mongoose检索date。 这是我的模式: var ActivitySchema = new Schema({ activityName : String , acitivtyParticipant : String , activityType : String , activityDate : { type: Date, default: Date.now } , activityPoint : Number }); 默认使用“mm.dd.yyyy”,所以我所有格式为“dd.mm.yyyy”的数据默认为Date.now。 有没有人知道是否有一个“格式:”dd.mm.yyyy“function,我可以直接放在架构?任何其他的想法?(真的不想更新所有的数据) 谢谢你的回复

在NodeJS中dynamic构buildMongoDB查询

我收到一个POST参数,如下所示: sort: [ { field: 'name', dir: 'asc', compare: '' }, { field: 'org', dir: 'asc', compare: '' } ] } 我需要创build一个基于MongoDB的查询,所以它应该是这样的: db.collection("my_collection").find( … ).sort({'name': 'asc', 'org': 'asc'}).toArray(…); 不pipe怎样,请记住,可以传递更多的字段。 此外,可能会发生这些字段都没有传递,这意味着查询不会有.sort() 。 我的问题:我如何dynamic创build一个查询与节点的MongoDB驱动程序? 有没有查询生成器或类似的东西?

NodeJS本地驱动程序上的示例MongoDB错误是什么样的?

我似乎无法find他们的文档或在互联网上的任何MongoDB错误对象的例子。 什么是一个示例MongoDB错误对象的样子? 我想“处理”错误和/或重新格式化它为我自己的目的,这取决于错误是什么。

为什么在使用MongoDB的$ push将新对象添加到数组时,为什么添加了ObjectID的_id?

我正在使用Node.js和Mongoose。 玩家和锦标赛variables是Mongoose对象,就在之前获取。 我想添加一个新的tournamentSession对象(不是一个Mongoose对象)到玩家对象的tournamentSessions字段。 我正在使用findOneAndUpdate能够确保我不添加两个相同的tournement(使用“$ ne”) Player.findOneAndUpdate({ '_id': player._id, 'tournamentSessions.tournament': { '$ne': tournament._id } }, { '$push': { 'tournamentSessions': { 'tournament': tournament._id, 'level': 1, 'status': 'LIMBO', 'score': 0, } } }, function(err, updatedPlayer) { // … }); 一切正常,除了包含ObjectID的“_id”字段被添加到tournamentSessions数组中新添加的会话,我不明白为什么会发生这种情况。 如果我手动添加“_id”字段和值“BLABLABLA”,“_id”字段永远不会被存储(因为它应该,因为它没有在模式中声明) 嗯,这是模式: var Player = mongoose.model('Player', Schema({ createdAt: { type: Date, default: Date.now }, lastActiveAt: Date, clientVersion: String, […]

Node.js承诺与mongoskin

我试图避免在进行mongodb查询时使用callback。 我使用mongoskin来打电话,如下所示: req.db.collection('users').find().toArray(function (err, doc) { res.json(doc); }); 在许多情况下,我需要做多个查询,所以我想使用Node.js承诺库,但我不知道如何将这些函数作为承诺包装。 我看到的大多数例子对于像readFile这样的事情来说都是微不足道的,我猜在这种情况下,我需要以某种方式包装到Array中。 这可以做,或将不得不由蒙古人实施的东西? 一个例子可以是任何一组callback,find / insert,find / find / insert,find / update: req.db.collection('users').find().toArray(function (err, doc) { if (doc) { req.db.collection('users').find().toArray(function (err, doc) { // etc… }); } else { // err } });

如何在存储后从MongoDB中检索二进制文件?

我存储的文件类似于以下内容: var pdfBinary = fs.readFileSync("myfile.pdf"); var invoice = {}; invoice.pdf = new mongo.Binary(pdfBinary); 然后我把上面的文件插入到MongoDB中。 然后我尝试检索它类似于以下内容: collection.findOne({}, function(err, retrievedPDF) { fs.writeFile("myretrieved.pdf", retrievedPDF.pdf.buffer, function(err) { …. }); }); 它作为一个零字节文件出来。 如果我console.log存储的文件,它看起来像这样: { pdf: { _bsontype: 'Binary', sub_type: 0, position: 0, buffer: <Buffer > }, _id: 53af545681a59758611937d7 } 我已经通过了文档,我发现它有点混乱。 我做错了,我无法存储/检索文件?

mongoose – 从每个用户find最后一条消息

我正在处理消息系统,我需要从发送消息给login用户的每个用户获取最后一条消息。 我在mongoDB中有这样的结构: [{ "_id": "551bd621bb5895e4109bc3ce", "from": "admin", "to": "user1", "message": "message1", "created": "2015-04-01T11:27:29.671Z" }, { "_id": "551bd9acf26208ac1d9b831d", "from": "user1", "to": "admin", "message": "message2", "created": "2015-04-01T11:42:36.936Z" }, { "_id": "551bdd6d849d53001dd8a64a", "from": "user1", "to": "user2", "message": "message3", "created": "2015-04-01T11:58:37.858Z" }, { "_id": "551bdd99849d53001dd8a64b", "from": "user2", "to": "admin", "__v": 0, "message": "message4", "created": "2015-04-01T11:59:21.005Z" }, { "_id": "551bdda1849d53001dd8a64c", […]