我正在研究版本控制,我们有基于UUIDs
和 的文档jobUuids
,jobUuids
是与当前工作用户关联的文档。我对这些集合有一些聚合查询,需要根据作业 UUID 进行更新,
聚合查询获取的结果应该是这样的:
如果当前用户jobUuid
文档不存在,则jobUuid: "default"
返回主文档(没有任何jobUuid的文档),
如果作业 uuid 存在,则仅返回文档。
我有一个$match
用于根据某些条件获取这些文档的方法,我需要从这些文档中根据上述条件过滤出文档,示例如下,
数据如下:
[
{
"uuid": "5cdb5a10-4f9b-4886-98c1-31d9889dd943",
"name": "adam",
"jobUuid": "default",
},
{
"uuid": "5cdb5a10-4f9b-4886-98c1-31d9889dd943",
"jobUuid": "d275781f-ed7f-4ce4-8f7e-a82e0e9c8f12",
"name": "adam"
},
{
"uuid": "b745baff-312b-4d53-9438-ae28358539dc",
"name": "eve",
"jobUuid": "default",
},
{
"uuid": "b745baff-312b-4d53-9438-ae28358539dc",
"jobUuid": "d275781f-ed7f-4ce4-8f7e-a82e0e9c8f12",
"name": "eve"
},
{
"uuid": "26cba689-7eb6-4a9e-a04e-24ede0309e50",
"name": "john",
"jobUuid": "default",
}
]
结果"jobUuid": "d275781f-ed7f-4ce4-8f7e-a82e0e9c8f12"应该是:
[
{
"uuid": "5cdb5a10-4f9b-4886-98c1-31d9889dd943",
"jobUuid": "d275781f-ed7f-4ce4-8f7e-a82e0e9c8f12",
"name": "adam"
},
{
"uuid": "b745baff-312b-4d53-9438-ae28358539dc",
"jobUuid": "d275781f-ed7f-4ce4-8f7e-a82e0e9c8f12",
"name": "eve"
},
{
"uuid": "26cba689-7eb6-4a9e-a04e-24ede0309e50",
"name": "john",
"jobUuid": "default",
}
]
基于上述条件,是否可以在聚合查询中过滤文档以提取特定职位uuid的文档?
编辑1:我得到了以下解决方案,该解决方案工作正常,我想要一个更好的解决方案,消除所有这些嵌套阶段。
编辑 2:用实际的 UUID 更新了数据,我只包含了name另一个字段,我们确实有n一些与此处不相关但在最后需要的字段(对于那些想要在所有内容上使用投影的人提及这一点)田野)。
侃侃无极
四季花海
慕尼黑的夜晚无繁华
相关分类