Articles of mongoose

如何使主键/ _id可选可以inputmongoose

我想让主键不需要input,但主键在mongodb中自动生成。 所以,我使用{type:ObjectId,required:false},但它不会工作,因为我让主键为空。 那么还有另外一种方法可以使主键可selectinput吗? 谢谢 restapi模型 var mongoose = require("mongoose"); var Schema = mongoose.Schema; var ObjectId = Schema.ObjectId var accessmenu = new Schema({ _id : {type : ObjectId,required: false}, acc_id : String, name : String, read : Boolean, execute : Boolean },{ collection: 'access_menu'}); var accessmenu = mongoose.model("accessmenu",accessmenu); module.exports.accessmenu = accessmenu; restapi app.put("/access_menu/:id",function(req,res){ var AccessMenu = […]

使用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 […]

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 […]

mongoose – 插入子文档

我有一个用户模型和一个日志模型。 日志模型是用户模型的子文档。 所以在我的用户模型中我有: var mongoose = require('mongoose'); var Log = require('../models/log'); var UserSchema = new mongoose.Schema({ username: { type: String, unique: true }, logsHeld: [ Log ] }); 然后在我的“日志”模型中,我有: var mongoose = require('mongoose'); var logSchema = new mongoose.Schema({ logComment: { type: String, }, }); module.exports = mongoose.model('Log', logSchema); 所以创build“用户”时,“logsHeld”总是空白。 我想知道如何将子文档添加到此用户模型。 我试过做这个POST方法: router.post('/createNewLog', function(req, res) { […]

节点与mongoose聚合和总和嵌套字段

当我对我的集合进行查询时 models.Project.find(function(err, result) { //result = doc below }).populate('media') …我得到这个结果: { _id: 57f36baa6cf34d079c8474a0, code: 'ZMIA', __v: 0, media:[ { _id: 57f36bb26cf34d079c847766, project_code: 'ZMIA', amount: 228, __v: 0 }, { _id: 57f36bb26cf34d079c84775c, project_code: 'ZMIA', amount: 250, __v: 0 } ] }, { _id: 57f36baa6cf34d079c8474a1, code: 'ZMJU', __v: 0, media: [] } media是一个参考领域。 如何将嵌套的媒体对象(如果存在)聚合到$sum amount字段并将结果按project_code分组?

Mongodb $查找dynamic集合

我有以下架构的项目types可能会有所不同,并在connections.kind提到。 var userSchema = new Schema({ name: String, connections: [{ kind: String, item: { type: ObjectId, refPath: 'connections.kind' } }] }); var organizationSchema = new Schema({ name: String }); 我正在试图做一个dynamic的查找,以便项目对象被填充。 但是这似乎不起作用。 db.users.aggregate([ { $lookup:{ from: '$connections.kind', localField: 'connections.item', foreignField: '_id', as: 'items' } } ]) 我知道我可以用mongoose.populate做,但是想知道是否可以用$ lookup