【问题标题】:Mongoose Storing Refs of ObjectId of another collectionMongoose 存储另一个集合的 ObjectId 的引用
【发布时间】:2017-03-16 16:51:04
【问题描述】:

我有两个集合“Person”和“Stories”。故事模型有一个称为受限的字段。我需要存储不受人员模式限制的故事的 ObjectId。通常显示该人可用的故事。

person.model.js

var mongoose = require('mongoose'), Schema = mongoose.Schema;  
var personSchema = Schema({  
  name    : String, 
  stories : [{ type: Schema.Types.ObjectId, ref: 'Story' }]
});
var Person = mongoose.model('Person', personSchema);

story.model.js

var mongoose = require('mongoose'), Schema = mongoose.Schema; var
storySchema = Schema({   
 creator  :  String,  
 title    : String,  
 restrictions : Boolean  
});
 var Story  = mongoose.model('Story', storySchema);

我完全是新人。请帮我在 person.controller.js

中找到要写的内容

【问题讨论】:

  • “帮帮我”通常不会在这里得到任何答复。提出您遇到问题的具体问题并展示初步努力。
  • 需要在人物模型中存储故事的对象ID。除了帮助我,我认为我的问题很清楚

标签: node.js mongodb mongoose


【解决方案1】:

您可以首先获取不受限制的故事的不同 ID 的列表,您可以使用 distinct() 命令执行此操作。

当您获得 id 列表后,您可以使用 findByIdAndUpdate()findOneAndUpdate()@987654324 使用该列表更新 Person 模型的故事字段@

一个例子如下:

Story.distinct("_id", { "restrictions": false }).exec(function(err, stories) {
    if (err) throw err;
    Person.findByIdAndUpdate(personId, 
        { "$addToSet": { "stories": { "$each": stories } } },
        { "new": true },
        function(err, person) {
            if (err) throw err;
            console.log(JSON.stringify(person.stories, null, 4));
        }
    )
})

【讨论】:

猜你喜欢
  • 2021-02-25
  • 2018-06-11
  • 1970-01-01
  • 2017-08-11
  • 2023-01-10
  • 2017-11-22
  • 2015-10-10
  • 2021-11-21
  • 2021-12-31
相关资源
最近更新 更多