假设我有2个收藏夹
第一个:-
db.product_main
{
_id:123121,
source_id:"B4456dde1",
title:"test Sample",
price: 250
quantity: 40
}
由大约10000个对象(数组)组成,唯一字段是source_id。
第二个:-
db.product_id
{
"_id":58745633,
"product_id":"B4456dde1"
}
由约500个组成,并且仅包含字段“ product_id”,该字段等于db.product_main的“ source_id”
现在,我想将两个集合相交,以便只找到db.product_id中不存在的那些。
db.product_main.aggregate({any query})
答案 0 :(得分:1)
只需使用查找阶段来查找与“ product_main”集合关联的产品,然后匹配空数组(即未找到product_id的记录)
db.product_main.aggregate([
{
$lookup: {
from: "product_id",
localField: "source_id",
foreignField: "product_id",
as: "products_available"
}
},
{
$match: {
products_available: {
$size: 0
}
}
}
])
答案 1 :(得分:0)
在使用聚合管道的WRITE
操作上,您还可以使用$out
命令直接卸载统计信息更新并将缓存的结果存储在product_stats
集合中(例如)。
稍后在web / ui / api READ
操作中,仅使用此缓存的集合。当然,您可以为缓存和非缓存结果创建数据库查询方法。