await dbConn()
return User.aggregate([
{
$match:{_id: mongoose.Types.ObjectId(id)}
},
{
$unwind:'$imgIds'
},
{
$lookup:{
from:'images',
localField:'imgIds',
foreignField:'_id',
as:'imgObjs'
}
}
],(err,res)=>console.log(res))
}
--------编辑--------------------------------------------
我在我的服务器行为中发现了一些非常奇怪的东西。当我执行一个简单的findById调用时,我的image项是一个Objectid数组。但是当使用聚合时,ObjecIds变成了String。有人知道上面是什么吗?
您需要将字符串转换为对象ID(或将对象ID转换为字符串)。
对于Mongo4.0或更高版本
您可以使用$ToObjectid
来完成此操作。在您的示例中,您可以在放松后添加$addfields
阶段:
{
$addFields: {
imgIdObjId: { $toObjectId: $imgIds }
}
}
{
$lookup:{
from:'images',
localField:'imgIdObjId',
foreignField:'_id',
as:'imgObjs'
}
}
我使用Nodejs和MongoDB与expressjs和mongoose库,创建一个具有用户、文章和评论模式的博客API。下面是我使用的模式。
我知道拆分字符串并使用运算符是可能的,但我想知道是否可以使用字符串比较轻松地完成。
主要内容:aggregate() 方法,管道MongoDB 中的聚合操作用来处理数据并返回计算结果,聚合操作可以将多个文档中的值组合在一起,并可对数据执行各种操作,以返回单个结果,有点类似于 SQL 语句中的 count(*)、group by 等。 aggregate() 方法 您可以使用 MongoDB 中的 aggregate() 方法来执行聚合操作,其语法格式如下: db.collection_name.aggregate(aggr
我在mongodb 4.0中使用Spring(boot)数据2.2.7。我已经设置了3个集合,试图通过聚合查找操作加入这些集合。 目录 股票 操作 目录 映射由 股票 映射由 productId字段引用目录集合中的_id字段 操作 映射由 组件ID字段指的是库存集合中的_id 我想查询操作或库存收集,以检索相应的节点或组件对象列表,该列表由Product.model字段(在目录集合中)排序。) 虽
我很难相信这个问题还没有在某个地方被问到并回答过,但我找不到任何它的痕迹。
本文向大家介绍MongoDB查询以查找FirstName和LastName的字段组合?,包括了MongoDB查询以查找FirstName和LastName的字段组合?的使用技巧和注意事项,需要的朋友参考一下 以下是要查询的字段组合查询- 这将产生以下输出-