Articles of mongodb

Mongoose:改进find()和count()查询

背景 我在Mongoose中有一个查询,find一组对象,然后将这些对象与它们的总数一起返回: var itemsPerPage = 4, pageNum = 1; Survey.find({}) .limit(itemsPerPage) .skip(itemsPerPage * pageNum) .then(docs => { if (docs.length === 0) console.log("There are no results matching your query."); else DocModel.count({}) .then(number => { console.log(JSON.stringify({number, docs})); }); }) .catch(console.log); 要做到这一点,我做到了: 用参数find查询 使用limit和skip从正确的页面获得结果 如果docs不为空,请启动count查询 返回信息 问题 这里的问题,因为我需要在查询分页,是我必须做2个单独的请求数据库( find和count ),这可能会非常沉重。 为了优化这个,我想避免count查询,但我不知道如何。 另一个问题是嵌套承诺反模式,但这不是我现在要关注的问题。 题 我很乐意提供任何有关改进此代码的build议!

如何查询主集合与另一个集合

如果我有2个集合: product和category产品有类别… 如何按类别查询产品? 我需要这样的东西: Product.find({category.name: "testCat"}, function() { … }) 任何解决scheme?

angular度不显示创build的对象,直到我刷新页面

请帮忙,我有一个消息服务,从数据库中获取我的消息并在用户个人资料页面上显示它们。 当我创build或删除邮件时,只能在刷新浏览器时看到更改。 在应用filter按IDsorting之前,页面dynamic更新,为什么filter解除了我的消息数组绑定? 轮廓组件: export class ProfileComponent implements OnInit { user: User; userId: any; messages: any; constructor(private authService: AuthService, private messageService: MessageService) {} ngOnInit() { this.authService.getUser().subscribe( (user: User) => { this.user = user; this.userId = user.userId; } ); this.messageService.getMessages() .subscribe( (messages: Message[]) => { this.messages = messages.filter(x => x.userId == this.userId); //this.messages = messages; //this […]

如何使用Mongoose来(添加,更新,删除)嵌套文件

我是一个新鲜的mongoose用户,我有一个小的练习,我有这个模式 `var BusinessSchema = mongoose.Schema({ personal_email: { type: String, required: true, unique: true }, business_name: { type: String, required: true, unique: true }, business_emails: [{ email: String, Description: String }], business_logo: { data: Buffer, contentType: String }, //Business Services services: [{ service_name: { type:String,required:true}, service_price: Number, promotion_offer : Number, service_rating : [{Clinet_username:String ,rating : Number}], […]

如何使用body-parser将嵌套对象数组插入/添加到使用nodejs和mongoose的mongodb数据库中

我正在尝试向mongo数据库插入数据。 我正在用mongoose做这个。 我已经创build了像下面的mongoose Schema – const countrySchema = mongoose.Schema({ country_id: { type : Number, required: true, unique : true }, country_name : { type : String, required : true, unique : true }, country_description : { type : String, required : true, unique : true }, country_currency : { type : String, required : true, […]

Mongoose $ pull是删除嵌套的整个数组,而不是数组中的单个值

我有一个如下所示的mongo模式: { "_id" : ObjectId("58e4222497b2735ba3cd9ec4"), "place" : "", "plant" : "Test1", "eventDate" : ISODate("2017-04-05T00:00:00Z"), "event" : "Test123", "toBeTested" : [ { "_id" : ObjectId("58e453a07c9f94702ebac93d"), "thingsTested" : [ "A1", "A2", "A3" ] } ]} 我正在使用mongoose删除thingsTested单个元素。 我在mongoose的代码是: Layout .update( {_id: req.params.parentid}, {$pull: {toBeTested: {thingsTested: 'A3'}}}, function (err, docs){ if (err) { res.send(err); } res.json(docs); } ); 正如你所看到的,我已经硬编码了,我想从thingsTested集中删除A3 […]

如何只给予用户Express.js的文章

我想通过login用户在我的用户/ myarticlesview中显示文章。 我该怎么做:这是我的用户模型和文章架构: let userSchema = mongoose.Schema( { email: {type: String, required: true, unique: true}, passwordHash: {type: String, required: true}, salt: {type: String, required: true}, articles: [{type: ObjectId, ref: 'Article'}], roles: [{type: ObjectId, ref: 'Role'}] } ); let articleSchema = mongoose.Schema ( { author: {type: ObjectId, ref: 'User'}, title: {type: String, required: true }, content: […]

mongoose不能保存embedded的文件

我正在尝试在Mongo DB中创build一个embedded文档的文档。 文档的模型/架构如下所示: var mongoose = require('mongoose'); var Schema = mongoose.Schema; // Cupboard Collection Schema var ShelfSchema = new Schema({ shelf_name: { type: String }, shelf_desc: { type: String } }); var CupboardSchema = new Schema({ cupboard_name: { type: String, required: true, unique: true }, cupboard_desc: { type: String, required: true }, shelf: [ShelfSchema] }, […]

Mongoose – 是否有可能修改键的值以匹配find()查询的条件?

我对Oracle非常熟悉,突然间我不得不使用MongoDB数据库创build项目。 我正在使用mongoose来连接到我的MongoDB。 我的问题是,在查询之前可以匹配查找条件吗? 例如,我得到这个name : John在我的MongoDB中,然后我只需要通过Oracle SQL来完成。 SELECT * FROM MY_SCHEMA.WORKERS WORKER WHERE UPPER(WORKER.NAME) = 'JOHN' 在mongoDB中,我所知道的和能做的就是这个。 var mongoose = require('mongoose'); mongoose.connect('localhost:27017/myDB'); workers.find( { "name": "JOHN" } ); 我一直在寻找解决scheme,找不到一个。 有没有办法将name的值设置为大写以匹配我需要的结果? 任何帮助,将不胜感激 :) 编辑:我find了这个问题的解决scheme,通过使用RegExp()mongoose。 RegExp将使我的mongoDB文档不区分大小写以匹配我的查询参数。 在这个答案的更多细节。 https://stackoverflow.com/a/9824712/7498283

mongoose创build与推多个参考

所以有一个与我的数据库的嵌套结构这里是我的三个模式:用户架构: var UserSchema = new mongoose.Schema({ email: { type: String, lowercase: true, unique: true, required: true }, password: { type: String, required: true }, role: { type: String, enum: ['trainer', 'client', 'admin'], default: 'client' }, trainer: { type: mongoose.Schema.Types.ObjectId, ref: 'User' }, programs: [ { type: mongoose.Schema.Types.ObjectId, ref: 'Program' } ], diet: [ { calories: […]