在DB中,我将som示例数据作为休假 项目(集合名称)
//Object 1
{
"_id" : 1234,
"itemCode" : 3001,// (Number)
"category" : "Biscuts"
}
//Object 2
{
"_id" : 1235,
"itemCode" : 3002,// (Number)
"category" : "Health products"
}
以上是项目集合中的样本数据。因此,有许多对象具有唯一的商品代码。 订单(集合名称)
{
"_id" : 1456,
"customer" : "ram",
"address" : "india",
"type" : "order",
"date" : "2018/08/20",
"orderId" : "999",
"itemcode" : "3001"//('string')
}
以上是订单示例数据。即使是这个集合,也有许多带有重复商品代码和订单ID的对象。 在应用程序中,我们有一些选项卡,称为未计费项目。因此,在此选项卡中,我们可以看到甚至一次未使用的商品。因此,根据以上数据,我如何显示未使用的物品? 例如:从以上数据中得出的项目代码应为3002,因为该项目甚至一次都没有使用。如何通过一个数据库查询获得输出?
答案 0 :(得分:1)
您可以在mongo 4.0版本中使用以下聚合。
db.items.aggregate([
{ $addFields: {
itemCodeStr: {$toString: "$itemCode"}
}},
{
$lookup: {
from: "orders",
localField: "itemCodeStr",
foreignField: "itemcode",
as: "matched-orders"
}
},
{
$match: {
matched-orders: []
}
}
])