基于父条件的深度填充

时间:2018-06-24 21:55:03

标签: mongodb mongoose mongodb-query mongoose-schema mongoose-populate

我有一个模特

让我们说

var ModelA= new Schema({
  x:string,
  y:refrence to model y
})

然后在模型y

var ModelY=new Schema({
  hidden:{type:Boolean,default:false},
  z:reference to model z
}) 

再次在模型z中,我有多个字段

var ModelZ=new Schema({
  p:string,
  q:number 
  ... and other fields
}) 

所以我的查询采用这种方式填充所需结果

ModelA.find({x:1}).populate('y')

因此,在填充y之后,我想填充(z)具有hidden == true的那些文档,否则保留原样(即ObjcectId)

请提出查询建议 谢谢

1 个答案:

答案 0 :(得分:0)

您可以执行以下操作

            Productos productos = new Productos();

            var Lista5Top = (from vendidos in vtas.lstVentas
                             join prod in productos.lstProductos on vendidos.ProductoId equals prod.id
                             select new { id = vendidos.ProductoId, rut = vendidos.clienteRut, name = prod.name })
                             .OrderBy(x => x.id)
                             .GroupBy(x => x.id)
                             .Select(x => new { id = x.Key, cont = x.Count(), name = x.FirstOrDefault().name })
                             .OrderByDescending(x => x.cont)
                             .Take(5).ToList();

但是我建议您使用$lookup查询来代替填充