mongodb - 将数组的最后一个元素的字段与父文档的字段进行比较
问题描述
我必须将父文档的嵌入字段与最后一个文档的嵌入字段(存在于数组中)进行比较,后者也是父文档的一部分,并externalIds
在这两个字段不匹配时返回文档。
此处为参考图片:
[包含数组的实际元数据][1]
[这是包含该字段的另一张图片][2]
所以在第二张图片中,我实际上只希望最后一个修订,即修订数组中的最后一个文档与父文档进行比较,需要比较的字段是metadata.formData.mergeStatus.status
。
我想要那些文档_id
,其中数组中的最后一个文档的字段与其父文档的相应字段不同,如果存在修订数组的话。
我是 mongodb 的新手,第一次在 stackoverflow 中询问,所以如果你觉得它很愚蠢,请原谅,但这是我的尝试。
db.document.aggregate([
{ $match: { $and: [
{ spaceId: 3007 },
{ revisions: { $exists: true, $not: { $size: 0 } } }
] } },
{ $project:
{ _id: 1,
spaceId:1,
externalId:1,
revisions: { $cond: {
if: { $isArray: "$revisions" },
then: { $size: "$revisions" },
else: "NA" } },
last: { $arrayElemAt: [ "$revisions", -1 ] },
difference: { $ne: [
"last.metadata.formData.mergeStatus.status",
"metadata.formData.mergeStatus.status" ] }
}
}
]);
The above suggestion really helps however i am confused for below scenario,
so the metadata field contains elementsData and inside of that is another embedded object signature, which has two string fields
1.userSignatureDate(String)
2.userSignatureText(String)
so when i have applied above logic to compare the *userSignatureDate* of parent metadata with respective field in last document of the revisions array.it is not giving actual results.
here is the image for the code that i had written and the sample metadata Structure .[enter image description here][3][enter image description here][4]
[1]: https://i.stack.imgur.com/rsrKv.png
[2]: https://i.stack.imgur.com/y6wsp.png
[3]: https://i.stack.imgur.com/398I8.png
[4]: https://i.stack.imgur.com/PYUAL.png
解决方案
尝试类似的东西
db.getCollection('test').aggregate([
{$project:
{
status: "$metadata.formData.mergeStatus.status",
last_revisions: { $arrayElemAt: [ "$revisions", -1 ] }
}},
{$project:
{
matched:{
$eq:[
"$status",
"$last_revisions.metadata.formData.mergeStatus.status"
]}
}}
])
推荐阅读
- javascript - 如何解决此错误:无法在视图目录“/home/lublub/views”中查找视图“登录”
- php - 无法在 Laravel 中的动态路由中间件中获取类和函数名称
- keyboard - SCANF 函数只记录按下的第一个字母
- css - 根据可用空间在一个全宽大 div 的上方和下方放置一组小 div
- typescript - 在 VUE 中使用 JSX 语法时,Storybook 无法编译
- watson-knowledge-catalog - Watson Knowledge Catalog 缺少类别选择
- javascript - 我正在尝试在表单提交中使用 ajax 但它不起作用
- gradient - 使用具有动量的随机梯度下降优化聚类中心和 DNN 参数
- python - 解析十六进制文件并逐字节解码
- c# - C# 在代码中使用 Azure DevOps 服务连接