【问题标题】:pulling data from one mongodb collection into another将数据从一个 mongodb 集合拉到另一个集合中
【发布时间】:2015-09-14 03:22:38
【问题描述】:

我已经为饮料列表创建了一个 mongodb 集合。架构如下。在其中我制作了一个可供用户选择的饮品清单。

 var drinkSchema = mongoose.Schema({
  name: String,
  date: {
    type:Date,
    // default: new Date()
    default: Date.now()

  },
  caffeineLevel: String
});

var Drink = mongoose.model('Drink',drinkSchema);

module.exports = Drink;

我还为我的应用程序的用户创建了第二个架构。理想情况下,用户可以通过从另一个模式中选择饮料来将数据移动到该模式中。该模式对每个用户都是唯一的。

var mongoose = require('mongoose');

var myDrinkSchema = mongoose.Schema({
  name: String,
  date: {
    type:Date,
    default: Date.now()
  },
  caffeineLevel: String
  // drinkWant: [{type:mongoose.Schema.Types.ObjectId,ref:'Drink'}]
});

var myDrink = mongoose.model('myDrink',myDrinkSchema);

module.exports = myDrink;

抱歉,我对此事没有更多的了解。我搜索了文档,发现了数据建模http://docs.mongodb.org/manual/core/data-model-design/。但这似乎没有具体的答案。

是否可以在模式方法中做到这一点?

【问题讨论】:

    标签: node.js mongodb mongoose schema


    【解决方案1】:

    你说得对,但是仅仅因为你指定了对另一个集合的引用并不意味着 mongoose 会为你填充它。您实际上必须指定要填充的字段,它将根据架构中该字段的ref 填充这些字段。如果您取消注释 drinkWant 数组并用 Drink _id 填充它,那么您应该能够 .populate() 您的结果。

    您只需在运行查询后链接.populate()。例如:

    myDrink.find({name: "someName"}).populate('drinkWant')
       .exec(function(err, results) {
          console.log(results);
    });
    

    欲了解更多信息see here

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2015-01-18
      • 1970-01-01
      • 2020-01-09
      • 1970-01-01
      • 2013-06-17
      • 1970-01-01
      • 2022-01-19
      相关资源
      最近更新 更多