将数据从一个mongodb集合转移到另一个mongodb集合

时间:2015-06-27 05:45:23

标签: node.js mongodb mongoose schema

我为饮料列表创建了一个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/。但这似乎没有具体的答案。

是否可以在架构方法中执行此操作?

1 个答案:

答案 0 :(得分:0)

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

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

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

了解更多信息see here