2016-11-03 33 views
-3

我有两个藏品“人物”和“故事”。故事模型有一个名为restricted的字段。我需要存储不受限于个人架构的故事的ObjectId。通常为了显示该人的可用故事。Mongoose存储另一个集合的ObjectId的Ref。

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

+1

“救救我”,通常不会让你在这里的任何答复。在面临问题的地方询问具体问题并展示最初的努力。 – qqilihq

+0

需要在人物模型中存储故事的对象ID。除了帮助我,我还以为我的问题很清楚 –

+1

请看[ask]和[mcve]。 – Mat

回答

1

写你能先取得对于不受限的故事不同ID的列表,你这样做使用distinct()命令。

当你的ID列表,那么你可以使用findByIdAndUpdate()findOneAndUpdate()update()该列表更新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)); 
     } 
    ) 
}) 
+0

是否引用了一种在mongo中存储数据的不好方法? –

+0

这取决于您的应用程序设计,而且是一个相当广泛的主题。有关MongoDB中数据建模的更多详细信息,请阅读文档[数据建模简介](http://docs.mongodb.org/manual/core/data-modeling-introduction/),特别是[Model One-to-Many Relationships与嵌入式文档](http://docs.mongodb.org/manual/tutorial/model-embedded-one-to-many-relationships-between-documents/)。除此之外,上述答案是否解决了您的问题? – chridam

+0

是的,上述答案解决了我的问题。谢谢 –

相关问题