如何从mongo中的两个不同集合中获取匹配的记录

问题描述 投票:0回答:1

我想从deposit和coin_info集合中获取数据,两个集合中的硬币ID都相同。

这里我使用查找聚合方法。但是我在结果中得到空数组。

var mongoose=require('mongoose');

var data = mongoose.Schema({
    user_id: { type: String },
    coin_key: { type: String }  
});

var coin_info = new mongoose.Schema({
    _id: { type: String }   
    coin_code: { type: String }
});

var deposte_model = mongoose.model('deposit', data);

var get_coin_info = mongoose.model('coin_infos', coin_info);


var ccc=deposte_model.aggregate([
{ "$unwind": "$projects" },
{ "$unwind": "$projects.tags" },
{
  $lookup:
    {
      from: "get_coin_info",
      localField: "coin_key",
      foreignField: "_id",
      as: "inventory_docs"
    }
  },
{ "$unwind": "$inventory_docs" },
 {
    "$group": {
        "_id": null,
        "allTags": { "$addToSet": "$inventory_docs" },
        "count": { "$sum": 1 }
    }
}

]).exec(function(err, results){
console.log(results);
 });
node.js mongodb aggregation-framework lookup mongoose-schema
1个回答
1
投票

尝试将coin_info的类型更改为ObjectId并引用deposite schema

var coin_info = new mongoose.Schema({
_id:{type:String}   
coin_code:{
type:ObjectId,
ref:coin_infos/coin_info //Your collection name
}

});
© www.soinside.com 2019 - 2024. All rights reserved.