Tag: mongodb

Mongoose:根据ID从数组中删除对象(Cast Error)

我有一个看起来像这样的模型: mongoose.Schema({ username: String, posts: [{ type: Schema.Types.ObjectId, ref: 'Post' }] }); 我有一个端点,我想传递一个ObjectID: app.delete('/post', function(req, res) { User.findOne({ _id: req.user._id}, function(err, result) { result.pull({ _id: req.body.post_id }); }); }); 感觉就像它应该工作,但我得到这个错误: CastError: Cast to ObjectId failed for value "[object Object]" 我究竟做错了什么?

如何在ejs中将variables设置为datetypes?

我使用express.js,mongoose和ejs,我有一个模型 var t_schema = new mongoose.Schema({ name: String, startFrom: Date, … }) router.get('/', function(req,res) { t_model.findOne({name: req.body.name}, function(result) {res.render('t', result)}) }) 所以结果包含一个Datetypes的startFrom 而在我的ejs: $('#startDate').datepicker.set(<%= result.startDate %>) 这是一个string而不是date,而datepicker.set需要date。 我怎样才能使result.startDate作为一个date? $('#startDate').datepicker.set(new Date('<%= result.startDate %>')) 似乎工作,但时区是不正确的。 和2) 在Nodejs / mongodb中操作date的最佳做法是什么? 我的用户来自不同的时区,所以我想在浏览器中显示date时间在他们的时区,我想也许最好在Mongodb中存储date为UTC?

来自两个共享相同引用的模式的Mongoose查询

假设我有两个模式: 1. UserEnrolledCourses var userCoursesSchema = new mongoose.Schema({ user: { type: mongoose.Schema.Types.ObjectId, ref: 'users'}, courseId: { type: mongoose.Schema.Types.ObjectId, ref: 'courses'}, isEnrolled: Boolean, }); 2.课程资源 var resourcesSchema = new mongoose.Schema({ courseId: { type: mongoose.Schema.Types.ObjectId, ref: 'courses', required: true }, type: {type:String, required:true}, }); 他们都从courses模式中共享相同的courseId引用。 所以,我的目标是从查询生成结果,对于每个courseId一个用户注册,列出所有可用的资源。 那可能吗?

从mongoDB集合中删除数组项目

我正在努力做下面的事情,如果有人能帮上忙,那将是很大的帮助 我想从items数组中删除一个项目 { "_id" : ObjectId("56e8c56a71cfa3fbe528c91b"), "shipping" : 6.7800000000000002, "subTotal" : 201, "totalCost" : 207.7800000000000011, "order_status" : "queued", "ordered_by" : "John Sims", "ordered_by_id" : "56e8c50a71cfa3fbe5288a48", "created_at" : ISODate("2016-03-16T02:31:06.723Z"), "items" : [ { "created_at" : "2008-12-17T11:01:23.460Z", "quantity" : 1, "country" : "Australia", "state" : "NSW", "suburb" : "Sydney", "location" : "Sydney,NSW,Australia", "longitude" : "151.1228434", "latitude" : […]

将图像文件直接存储到mongodb

我不需要gridFs,因为我的图片文件肯定不会超过16mb。 我也不需要像s3那样的文件存储,我在大多数的项目中使用。 我混淆了使用bson数据直接将图像存储到mongodb文件。 说我没有从客户端的文件,我只是像example.com/v1/myImg.jpge的图像链接,我应该先做什么? 将图像转换为base64,然后将其存储为二进制types?

无法查询mongoose中的Oplog

我在MongoLabs mongoDb上查询mongo oplog。 由于Mongolabs不允许为本地用户创build用户,所以我在pipe理员中创build了一个oplog-reader,但会引发错误,表明它是未经授权的: 代码片段: var oplogURL = 'mongodb://<oplog-user>:<password>@node1,node2:port/admin?replicaSet=rs-<relpset>'; var allLocalURL = 'mongodb://<oplog-user>:<password>@node1,node2:port/local?replicaSet=rs-<relpset>'; //user on admin with "readWriteAnyDatabase" permisson, trying to use local db var allReaderURL='mongodb://<user>:<password>@node1,node2:port/admin?replicaSet=rs-<relpset>'; //user on admin with "readWriteAnyDatabase" permisson var db = mongoose.createConnection(oplogURL,{replset: { poolSize: 50 }}, function (err, res){ if (err) {console.log("Oops!"); console.log(err);} }); var opschema = new mongoose.Schema({v:"Number", op:"String", ns:"String"}, […]

Mongodb查看数组中的所有项是否存在并更新else insert

我有一个mongo标签集合,当用户input一个标签数组时,我想要执行以下操作: 如果数组中存在标签,则更新计数如果数组中的标签不存在,则插入计数为0 我目前有: QuestionTags.update({'tag': {$in: tagArray}}, {$inc : {'count': +1} }, { upsert: true }); QuestionTags是db集合的mongoose模式。 这似乎并没有工作。 我input了一个新的标签数组,他们没有被添加,现有的标签没有增加。 有没有办法处理这个,而不必循环tagArray并为数组中的每个项目调用数据库? 更新:更改我的代码到这个 QuestionTags.update({'tag': {$in: req.body.tags}}, {$inc : {'count': +1} }, { upsert: true, multi: true }); QuestionTags.find({'tag' :{$nin: req.body.tags}}, function(err, newTags) { console.log("New Tags :" + newTags); var tagArray = []; newTags.forEach(function(tag){ var tagObj = { tag: […]

Mongo。回复垃圾

当我从Postman执行这个函数时: router.get('/db', function(req, res, next) { tune.find({}, function (err, results) { res.json(results); }); }); 我的数据库返回这个: [{"_id":"56f30425ba97bb301fe6ab1a","__v":0}, {"_id":"56f30514f9b7ea3b1f1fd9f7","__v":0}, {"_id":"56f306bb9c8203451f2cc58a","__v":0}, {"_id":"56f306ca9c8203451f2cc58b","__v":0}, {"_id":"56f306e99c8203451f2cc58c","__v":0}, {"_id":"56f33d43b64d540b208b6c3c","__v":0}] 我的mongoose模式: var Schema = mongoose.Schema; var track = new Schema({ title: String, artist: String, genre: String }); var tune = mongoose.model('tune', track); 我的post: router.post('/db', function(req, res, next) { var tune1 = new tune(req.body); tune1.save(function […]

创buildlogging时出现重复键错误

这个错误真的很混乱。 我可以创buildlogging一次,但不pipe怎么样,错误会出现: E11000 duplicate key error index: test_db.students.$code_1 dup key: { : null } 这是我的模式: var Schema = { "stuCode" : String, "firstName" : Boolean, "lastName" : Boolean, "email" : String }; 之前我有stuCode作为code和_code它需要它是唯一的。 这可能会导致一个问题。 我尝试删除该集合中的所有数据,在mongoose.connection.on('open', function(){ }); 但问题仍然存在。 我只能保存第一个logging,第二个是不可能保存的。 这个问题的解决scheme是什么?

nodejs mongodb es6-promise用外键数据获取列表

新增到stackoverflow / nodejs / mongo / promises / es6。 我已经成功地创build了一些简单的查询和插入,使用承诺,但现在已经对墙,所以想我会寻求一些帮助。 我想通过查找一个创build者(所有者)和(锻炼)名称来检索例程列表,以挑选与例程相关的锻炼(1to1)。 我在这里尝试过的想法不是承诺只是callback? 以及如何链接和分享先前的结果与承诺,但似乎无法得到一个循环工作与平面链接的想法。 所以,在伪代码 getRoutineList foreach routine: get user account using Routine.email get workout for Routine, using user._id and Routine.workout_name return the list of routines and workouts 我最初的想法是基于我目前的工作和我有限的经验。 var rp = routines.find( {owner : user_id}).toArray().then( function( routine_list){ for( var i =0; i<routine_list.length; i++){ var routine […]