mongodb - MongoDB:扁平数组测验
问题描述
我有一些关于用户查看和购买某些商品的数据。这是我的 mongodb 集合示例:
{
"_id" : ObjectId("blah"),
"user" : "u1111",
"items_viewed" : ["i1111", "i12345"],
"items_buyed" : ["i12345"]
}
我想要一个扁平版本,如下例所示:
{
"user" : "u1111",
"item" : "i1111",
"buyed": 0
}
{
"user" : "u111",
"item" : "i12345",
"buyed" : 1
}
如果该项目在 items_buyed 数组中,它应该在“buyed”字段中有 1,如果它只在“items_viewed”中 - 0。
请告诉我该怎么做?
解决方案
// Aggregation Pipeline Stages
[
// Stage 1
{
$match: {
"_id" : "1"
}
},
// Stage 2
{
$unwind: {
path : "$items_viewed",
}
},
// Stage 3
{
$project: {
"item" : "$items_viewed",
"buyed" : {
$cond: {
if: {
$in: [ "$items_viewed" , "$items_buyed" ]
}, then: 1, else: 0 }
}
}
},
]
);
推荐阅读
- visual-studio - 新的 Visual Studio 安装,测试未在测试资源管理器中运行
- dataframe - Pyspark fillna 具有来自另一个数据帧的值
- reactjs - React 告诉我,我不能在 contextAPI 的“Provider”函数中使用钩子
- sql - 从每个 id 具有特定值的表中选择行
- c - 如何将函数的返回值分配给变量
- c# - 以编程方式构建 - 未从程序集中加载“TransformTemplates”任务
- php - 使用 PHP 在 JSON 中搜索值
- typescript - 当某些参数是通用的或匿名的时键入 compose
- tensorflow - 使用 TFMOT 修剪的模型是否需要重新训练?
- python - pyautogui.displayMousePosition() 不起作用