我有两个收藏品“人物”和“故事”。 Stories Model有一个名为restricted的字段。我需要存储不受人物模式限制的故事的ObjectId。通常是为了显示该人的可用故事。
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);
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
中要写的内容答案 0 :(得分:1)
您可以先获取不受限制的故事的不同ID列表,然后使用 distinct()
命令执行此操作。
当您获得ID列表时,您可以使用 findByIdAndUpdate()
或 findOneAndUpdate()
更新人员模型的故事字段strong>或 update()
。
以下是一个例子:
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));
}
)
})