Articles of mongoose

如何从MongoDB收集文件中删除文件?

我有ID从客户端控制器打印现在我想从下面的代码中删除这个文件从mongodb是不显示任何错误,但甚至没有从集合中删除文件,如何删除文档使用_id ? controller.js var Diagram = { remove: function(id, res) { console.log('deletecontroller', id); diagram.remove({ _id: id }); } } module.exports = Diagram;

查询MongoDb以从引用ID数组上的集合中获取计数

我共有3个集合:1.用户2.职位3.行动 我的collections看起来像这样: 用户: { "_id" : ObjectId("57ee65fef5a0c032877725db"), "fbId" : "EAAXZA4sZCZBKmgBAKe0JpJPrp7utWME6xbHT9yFD", "name" : "Aftab", "email" : "xxxe@hotmail.com", "gender" : "male", "__v" : NumberInt(0), "updatedAt" : ISODate("2016-10-10T05:11:35.344+0000"), "score" : NumberInt(90) } 动作: { "_id" : ObjectId("57f7a0ba3a603627658afdd3"), "updatedAt" : ISODate("2016-10-07T13:18:50.815+0000"), "createdAt" : ISODate("2016-10-07T13:18:50.815+0000"), "userId" : ObjectId("57ee65fef5a0c032877725db"), "postId" : ObjectId("57f4b5e98899081203883a1b"), "type" : "like" } { "_id" : ObjectId("57f7a0ba3a603627658afdd4"), "updatedAt" […]

mongooseorderby不工作

我正在build立一个简单的分贝来存储游戏的高分。 现在我想检索高分作为sorting列表。 不幸的是,我不明白为什么下面的代码将无法正常工作,返回的列表不按sorting属性sorting。 var mongoose = require('mongoose'); var Score = mongoose.model('Score'); router.get('/', function(req, res, next) { Score.find( { $query: {}, $orderby: { score : -1 } } , function(err, scores) { if (err) {return next(err);} res.json(scores); }); });

MongoDB聚合:$存在的任何值

我试图利用MongoDB聚合RESTful api,但陷入了下面的情况。 假设我有Subscriptions模型,看起来像这样: var mongoose = require('mongoose'), Schema = mongoose.Schema; var SubscriptionSchema = new Schema({ // … cancelled: Date }); 如果订阅处于活动状态,则cancelled属性可以是undefined ,也可以是用户取消操作的Date 。 现在,我有一个GET /me/subscriptions ,它聚合了订阅,并有一个可选的查询参数: cancelled=true (只显示取消)或cancelled=false (只显示活动)。 如果没有指定,应该返回任何订阅(激活或取消)。 var express = require('express'), router = express.Router(), Subscription = require('../../models/subscription'); router.get('/me/subscriptions', function(req, res, next) { var cancelled = req.query.cancelled === 'true' ? { $exists: true […]

图式数组中的mongoose数

我需要在模式中查找元素,然后统计它们发送的总消息。 我已经尝试了以上代码,但不适合我。 User.find({type: 'psycologist'}).exec(function (err, users) { if(err){ callback(new Error("Something went wrong"), null); }else{ Message.count({userFrom: { "$in" : users} }).exec(function (err, counter) { if(err){ callback(new Error("Something went wrong."), null); }else{ console.log(counter); //displays 0 callback(null, counter); } }); } }); 消息架构 var schema = new Schema({ content: {type: String, required: true}, type: {type: String, required: true, […]

Mongoose – 查询获取文档的所有子文档

我对mongoose很新,我有一个公司名单,每个公司都有一个用户的子arrays。 我只想用mongoose检索特定公司的所有用户: 一个单一的公司就像 { "_id": "57ffa47f5b70f90831212348", "name": "mycompany", "address": "…", "phone": "…", "users": [ { "_id": "57ffa47f5b70f90831212347", "username": "alpha", "name": "myname", "surname": "mysurname", "password": "…" } ] } 我试着用 Company.findOne({ 'name': req.user.name }) .aggregate({$unwind: '$users'}) .exec( function(err, users) { if (err) res.status(500).send(err); res.json(users); }); 但我没有运气…我不知道如何正确使用聚合。

Mongodb只有在匹配的组合不返回真的时候才能find并插入

我必须在行动集合中插入一个批处理,如下所示: [ { "userId": "57ee65fef5a0c032877725db", "postId": "57f63ce196b01748e4712ed3", "type": "like" }, { "userId": "57ee65fef5a0c032877725db", "postId": "57f7335223a76c0f780a44c5", "type": "dismiss" }, { "userId": "57ee65fef5a0c032877725db", "postId": "57f7335223a76c0f780a44c5", "type": "dislike" } ] 操作集合的模式如下所示: const ActionSchema = new mongoose.Schema({ userId: mongoose.Schema.Types.ObjectId, postId: mongoose.Schema.Types.ObjectId, type: String }, { timestamps: true }); 但在插入之前,我想确保这个数组中的这个特定的“userId”和“postId”在db的action collection中没有匹配的组合。 由于用户只能执行由其他用户发布的特定post的单个操作。

在Node.js中用MongoDB删除上传的文件

我有两个实体之间的一对多关系:课程和文件。 所以,我设置我的数据库的方式是使用两个独立的集合:课程和文件。 var CourseSchema = new mongoose.Schema({ name: { type: String, required: true }, code: { type: String, required: true, unique: 1, uppercase: 1 }, files: [{ type: mongoose.Schema.Types.ObjectId, ref: 'File' }] // more fields }); var FileSchema = new mongoose.Schema({ name: { type: String, required: true } // more fields }); 我有一个工作页面,允许用户在课程中上传和添加文件。 同样,他们也可以在同一页面上删除选定的文件。 我担心的是当我删除选定的文件。 […]

如何promisify我使用NodeJS蓝鸟创build一个正则函数?

我第一次用Mongoose方法调用testing了Bluebird。 这很容易,只需要做Promise.promisifyAll(myObj) ,然后调用myObj.methodAsync 但是当我试图在没有mongoose的情况下实现它时,我不知道该怎么做,例如: function Foo(){} Foo.prototype.test = function(c,cb){ cb(new Error(),{a:1, b:2, c:c}); }; module.exports = new Foo(); 这会引发这个错误。 未处理的拒绝(<{“a”:1,“b”:2,“c”:true}>,没有堆栈跟踪)。 这是要catch ,我可以使用它没有错误。 任何人都知道如何实现我的方法来与承诺实现良好的工作?

MongoDB mongoose子文档创build两次

我正在使用一个简单的表单,可以用来注册一个网站的文章。 后端看起来像这样: // Post new article app.post("/articles", function(req, res){ var newArticle = {}; newArticle.title = req.body.title; newArticle.description = req.body.description; var date = req.body.date; var split = date.split("/"); newArticle.date = split[1]+'/'+split[0]+'/'+split[2]; newArticle.link = req.body.link; newArticle.body = req.body.body; var platforms = req.body.platforms; console.log(platforms); Article.create(newArticle, function(err, createdArticle){ if(err){ console.log(err.message); } else { var counter=0; platforms.forEach(function(platform){ var platformed=mongoose.mongo.ObjectID(platform); Platform.findById(platformed, […]