Articles of mongodb

通过mongoose模式在mongodb中传输数据,但不传递唯一真密钥的值

我有这样一个mongoose模式: var UserSchema = new Schema({ name: {type: String, required: true}, email: {type: String, required: true,unique: true}, mobNum: {type: String, required: true, unique: true}, username: {type: String, unique: true}, dob:{ type: Date}, isTempUser: {type: String, default: true}, mobNumVerified: {type: Boolean, default: false}, emailVerified: {type: Boolean, default: false}, registrationComplete: {type: Boolean, default: false}}) 当我尝试使用此代码保存数据在数据库中: – let […]

如何find节点和mongodb?

这是我的“用户组”数据 { "_id": { "$oid": "58f7537ec422895572e988a1" }, "name": "aaa", "groupname": "group north,group south", "mobilenumber": "0509867865", "userid": "6035555c16" } 这里是我的“群组”收集数据 { "_id": { "$oid": "58e5eb3c035555c33f979daf" }, "groupname": "group north", "message": [ { "val": "hai how are you", "key": "1" }, { "val": "i am fine", "key": "2" } ] }, { "_id": { "$oid": "3c035555c33f979daf58e5eb" }, […]

mongoose需要一个子文件吗?

是否有可能在mongoose嵌套模式,并有一个必要的validation儿童? 像这样的东西: const userSchema = new mongoose.Schema({ name: { type: String, required: true } }); const eventSchema = new mongoose.Schema({ name: { type: String, required: true }, host: { type: userSchema, required: true } }); 我在文档中找不到任何东西。 谢谢。

如何使用.forEach()插入多个集合并检查它是否存在

我想插入多个用户的详细信息.forEach()到我的Mongodb数据库。 在插入logging之前,我想检查用户logging是否存在。 如果用户不存在,则插入新的用户logging,否则更新现有的用户logging。 下边是 var dataArray=[ {"id":"1","name":"abc","email":"abc@gmail.com"}, {"id":"2","name":"xyz","email":"xyz@gmail.com"}, {"id":"1","name":"abc","email":"abc@gmail.com"}, ]; dataArray.forEach(function(dataVar){ //check record exist or not User.findOne({id:dataVar.id},function(err,user){ if(!user){// Insert If user not exist var userSchema=new User({ id:dataVar.id, name:dataVar.name, email:dataVar.email }); userSchema.save(function(err,result){ console.log('New Record Inserted'); }) }else{ // Update records if user exist User.update({id:dateVar.id},{email:dataVar.email},function(err,result){ console.log('Record Updated');; }); } }) }); 当运行这个代码片段时,它只检查数组中的第一个对象并插入到我的数据库中。 但下一次当第三个对象执行时,它不会像新logging那样检查和插入。 我没有得到什么事情。 请让我知道如何解决它。 谢谢。

queryselector必须是一个对象mongodb

我尝试在数据库中发布数据,但我得到这个错误queryselector must be an object mongodb 。 这是我的代码 模型var MongoClient = require('mongodb')。MongoClient; exports.register = function(val,cb) { var email = val['email']; var password = val['password']; var user = val['user']; MongoClient.connect(//url connect to db ,function(err,db){ if(err) cb(null,{result:false,message:err}); db.collection('user').findOne(email,function(err,user){ if(err) cb(null,{result:false,message:err}); if(user){ cb(null,{result:false,message:'Email already exists'}); }else{ db.collection('user').insert(user,function(err){ if(err) cb(null,{result:false,message:err}); cb(null,{result:true,message:'Success'}); }) } }) }); }; 调节器 var express= […]

在promise中定义asynchronous函数

我正在使用.then编写承诺代码。 现在,我决定使用await / async来编写它。 我已经在promise中调用了一个函数add_Lessons ,然后在那个函数中调用另一个函数。 这是我的代码使用.then 。 function create_section(sections,course_ID,i) { return new Promise( (resolve) => { var s_duration = 0; var sname = sections[i].name; var s_obj = { //some object; } var section_id; DB.section.create(s_obj,function (err, data_s) { if (err) return next(err); section_id = data_s._id; var lesson = sections[i].lessons; add_lessons(lesson,section_id,i) .then(function(arr){ resolve(arr); }) }); } […]

mongooseasynchronous/等待查找然后编辑和保存?

是否有可能做一个查找,然后保存使用asynchronous/等待承诺? 我有以下代码: try { var accounts = await Account.find() .where("username").in(["tkrones@gmail.com"]) .exec(); accounts.password = 'asdf'; accounts.save(); } catch (error) { handleError(res, error.message); } 我得到以下错误: ERROR: accounts.save is not a function

查找大文档内的对象

是NoSQL / MongoDB的新手我想知道如何从一个可能的大文档中获取特定的对象。 我的项目集合中的文档如下所示: { "_id" : ObjectId("5935a41f12f3fac949a5f925"), "project_id" : 13, "updated_at" : ISODate("2017-06-28T01:43:50.994Z"), "created_at" : ISODate("2017-06-05T18:34:07.150Z"), "owner" : ObjectId("591eea4439e1ce33b47e73c3"), "name" : "My demo project 1", "visibility" : 0, "uploaded_files" : [ { "fieldname" : "sourceStrings", "originalname" : "Log_20-6-2017_19-03-24-626.txt", "encoding" : "7bit", "mimetype" : "text/plain", "_id" : ObjectId("5952deb44fb371d8bc00dd43") }] } 而不是只有一个“上传的文件对象”,可能有数百个。 我需要获取项目信息(如所有者,可见性,名称等),然后我想通过_id获取uploaded_file对象。 很明显,我可以遍历uploaded_files中的所有对象,但是我认为这是性能上可怕的。 我到目前为止是: var […]

我应该使用什么数据types来存储base64string?

我有一个base64的图像(例如data:image / jpeg; base64,/ 9j / 4AAQSkZJRgABAgAAAQABAAD / 7QCcUGhvdG9zaG9w ….) 如何保存在数据库中? 模式中字段的types应该是什么? 缓冲?

mongoose填充虚拟与sorting和限制

我正在尝试编写一个mongoose查询来检索一组资产以及这些资产的最近交易。 交易与资产分开收集。 为了做到这一点,我首先在资产模型中创build了一个虚拟数组,将资产链接到事务。 schema.virtual('transactions', { ref: 'transaction', localField: '_id', foreignField: '_asset', justOne: false }) 然后我使用.populate在一个node.jsexpression式控制器中进行查询(注意硬编码的“limit:1”在某个点上将变成N): exports.getList = function (req, res) { Model .find({}, { __v: 0 }) .populate({ path: 'transactions', options: { sort: { 'created_at': -1}, limit: 1}, }) .lean() .exec(function (err, model) { if (err) res.send(err); res.json(model); }); } 在我的testing系统中有3个资产,每个资产有一堆交易,它将返回前两个资产的旧交易,第三个交易没有任何交易。 当我删除“限制:1”并返回所有交易时,它将正确sorting并返回所有三个资产的交易。 我相信我遇到了这个bug: https://github.com/Automattic/mongoose/issues/4321 任何想法在优雅的解决方法? […]