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

Node.js 如何从mongo中的两个不同集合中获取匹配记录,node.js,mongodb,aggregation-framework,lookup,mongoose-schema,Node.js,Mongodb,Aggregation Framework,Lookup,Mongoose Schema,我想从存款和硬币信息收集中获取数据,这两个收集中的硬币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: Stri

我想从存款和硬币信息收集中获取数据,这两个收集中的硬币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);
 });

尝试将coin_信息的类型更改为ObjectId,并引用存款模式

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

});

var coin_info=mongoose.Schema({u id:mongoose.Schema.Types.ObjectId});是的,您也可以这样做前两个展开正在做什么?var ccc=deposte_model.aggregate([{$lookup:{from:“get_coin_info”,localField:“coin_key”,foreignField:“_id”,as:“inventory_docs”},])。exec(函数(err results){console.log(results);});get_coin_info表中的coin_密钥和id是否相同?