如何使用 mongodb 在对象内迭代数组
Posted
技术标签:
【中文标题】如何使用 mongodb 在对象内迭代数组【英文标题】:How to iterate array inside the object using mongodb 【发布时间】:2019-11-03 06:08:09 【问题描述】:我尝试使用 mongodb 迭代对象键值内的数组。但它不起作用。如何实现它。
数据库代码
【问题讨论】:
【参考方案1】:你可以使用下面的聚合
db.product.aggregate([
"$lookup":
"from": "category",
"localField": "id",
"foreignField": "_id",
"as": "ordersetails"
,
"$project":
"product_name": 1,
"product_image": "$arrayElemAt": ["$product_image", 0] ,
"ordersetails": "$arrayElemAt": ["$ordersetails.name", 0]
]).toArray()
【讨论】:
如果ordersdetails中有多个记录,则无法使用。 @RishabhGarg 请检查localField
和foreignField
。它针对另一个集合的_id
,这意味着该记录是唯一的。希望你能得到它。
@Fanpark 是的,是的。错过了_id。【参考方案2】:
如果您在 orderdetails 数组中有多个对象,则可以使用以下查询:
db.product.aggregate([
$lookup:
from: "category",
localField: "category_id",
foreignField: "id",
as: "ordersetails"
,
$project:
product_name: 1,
product_image: $arrayElemAt: ["$image", 0] ,
ordersetails: 1
,
$unwind: "ordersetails"
,
$project:
product_name: 1,
product_image: 1,
ordersetails: "$ordersetails.name"
,
]).toArray();
【讨论】:
以上是关于如何使用 mongodb 在对象内迭代数组的主要内容,如果未能解决你的问题,请参考以下文章
如何使用 mongoose 或 mongodb 查询更改架构内的方案数组内的值。?