Articles of mongodb

使用mongoose的重复的项目

我试图从列表中插入元素使用节点和mongoose在我的数据库。 该列表只包含url作为string。 在插入之前,检查URL是否已经在用户的数据库中。 “人”是一个文件,链接是一个数组: for (var i = 0; i < url.length; i++) { var found = false; //if no links if (person.links.length === 0) { person.links.push({link: url[i]}); person.save(function (err) { if (err) return handleError(err); }); } else{ //for each link in database for (var z = 0; z < person.links.length; z++) { //If we […]

mongoose更新嵌套值

我有像我这样的mogoose模式的嵌套属性: const userSchemaValues = { username: { type: String, required: [true, 'Username required'], trim: true, unique: true, lowercase: true }, password: { type: String, required: [true, 'Password required'], trim: true, minlength: 8 }, … prop: { prop_1: String, prop_2: String } }; valuesToUpdate.prop = _.pick(req.body, 'prop_1', 'prop_2'); log.debug(JSON.stringify(valuesToUpdate)); User.update({_id: req.params.id}, {$set: valuesToUpdate}) .then((data) => { […]

Mongodbdynamic模式保存任何数据

我们经常像这样定义一个模式 var mongoose = require('mongoose'); var Schema = mongoose.Schema; var Account = new Schema({ username: String, password: String }); module.exports = mongoose.model('account', Account); 我们必须传入匹配模式的对象,否则什么都不起作用。 但是说我想保存一些dynamic的东西,我甚至不知道它是什么,例如它可以 {'name':'something',birthday:'1980-3-01'} 或者其他任何东西 {'car':'ferrari','color':'red','qty':1} 那么你如何设置模式呢?

mongoose:聚合和计数

我有一个NodeJS / MongoDB应用程序,其数据存储在一个名为"Feedback"的集合中。 数据如下所示: [ { "__v": 0, "_id": "57d6b2d09f46ca14440ac14e", "customerFeedback": [ { "_id": "57d6b2d09f46ca14440ac14f", "answer": [ { "_id": "57d6b2d09f46ca14440ac150", "answerValue": "cat", "answerWeight": 0 } ], "question": "What is your favourite thing about this shop?", "questionId": "57d65edc0132461120fa0afd" }, { "_id": "57d6b2d09f46ca14440ac151", "answer": [ { "_id": "57d6b2d09f46ca14440ac152", "answerValue": "Okay", "answerWeight": 0 } ], "question": "How was […]

NodeJS MongoDB传递参数在聚合pipe道中

如何将parameter passing给聚合? 我得到的参数,并试图传递它使用$match运算符,但查询返回空数组: app.get('/api/:name', function(req, res){ var name = req.params.name; console.log(name); db.collection('coll').aggregate([{$match: {name: '$name'}}, {$unwind: { path: "$dates", includeArrayIndex: "idx" } }, { $project: { _id: 0, dates: 1, numbers: { $arrayElemAt: ["$numbers", "$idx"] }, goals: { $arrayElemAt: ["$goals", "$idx"] }, durations: { $arrayElemAt: ["$durations", "$idx"]}}}]).toArray(function(err, docs) { if (err) { assert.equal(null); } else { […]

下面的代码中db.createCollection会不会build立一个新的数据库?

我在Node工作区的server.js文件中有下面这段代码。 我的问题是,每次我从bash命令行运行我的server.js文件,我是否设置了一个名为polls的新集合? 或者MongoDb认识到集合已经存在? 什么时候我终止我的连接到Mongo,然后从命令行重新启动它? mongo.connect('mongodb://localhost:27017/url-shortener', function(err, newDb){ if(err){ throw new Error('Database failed to connect'); }else{ console.log('Successfully connected to MongoDb database'); } db = newDb; db.createCollection('polls', { autoIndexId: true }); });

使用Express和Mongodb维护上传的图片 – 最佳实践?

我正在开发一个servlets(Express,Mongodb),用户可以在其中将图像上传到他们的账户。 在我潜入之前,我想确保我有正确的策略来pipe理(存储,编辑,删除,加载)这些上传的图片。 我最初的想法是 使用users-id将图片上传到一个文件夹 将用户数据库模型中的目录链接保存为string 然后在前端将url-strings粘贴到img-src中 这个方法真的让我感到困惑,因为基本上需要在两个地方维护图像(更改图像名称,删除图像,添加图像…),数据库模型(url-string)和上传 – 文件夹结构(path,图像名称)。 使用一组辅助函数可能会使这个变得更容易。 但是,还有,用Mongodb和Expresspipe理图像的更优雅的方法是什么? 这里有最佳做法吗?

Mongo副本集无法find主要

我find了一个使用docker设置mongo副本的教程,我的命令是 创buildnetworking集群 sudo docker network create curator-cluster 创build一个名为mongo1的特定容器,将27018映射到27017里面,设置名称是rs0 sudo docker run \ -p 27018:27017 \ –name mongo1 \ –net curator-cluster \ mongo mongod –replSet rs0 我的configuration, config = { "_id" : "rs0", "members" : [{"_id" : 0, "host" : "mongo1:27017"}, {"_id" : 1, "host" : "mongo2:27017"}, {"_id" : 2, "host" : "mongo3:27017"}] } 最后,我创build了3个容器 5949826d5bb1 […]

如何在express js中直接保存base64到mongoose

我想保存一个图像不在我的服务器,但在我的数据库。 这是我的模型 var mongoose = require('mongoose'); var Schema = mongoose.Schema; var categorySchema = new Schema({ img: { data: Buffer, contentType: String }, }); module.exports = mongoose.model('Category', categorySchema); 现在在我的路由器我得到这个base64图像与一个很长的string。 { '$ngfDataUrl': 'data:image/png;base64,long-String} 我想知道如何将这些信息保存在我的mongoose db数据库中。 router.post('/add', function (req, res) { var category = new Category(); category.img.data = req.body.category.img; category.img.contentType = 'image/png'; category.save(function (err) { if (err) throw […]

如何用node.js中的dynamic字段更新文档

假设我在数据库中有一个文件,其结构如下: id: 1, name: alex, age: 21 客户端和id:1相同的文件有一些更新id:1返回为; id: 1, name: alex, age: 21, location: usa 在那里添加一个新的字段location 。 我想更新数据库中的文档。 我想添加这个新插入的字段,但我无法找出如何处理这种情况。 因为location不是静态的,所以可以是surname , job等等。 所以新插入的字段是dynamic的,我不知道提前。 如果字段location是静态的,我可以写一个查询为; db.collection("user").updateOne( {id: 1}, {$set: {name: "alex", age: "21", location: "usa"}}, function(err, result){ if(err){} else{} }); 但现在,我怎样才能用这个新添加的字段来更新文档呢?