Мне нужно сравнить встроенное поле родительского документа со встроенным полем последнего документа (присутствующего внутри массива), которое также является частью родительского документа, и вернуть документы 'externalIds
, если эти два поля не совпадают.
Для справки вот изображения:
[Фактические метаданные, содержащие массив] [1]
[Вот еще одно изображение, содержащее поле] [2]
Так что вВторое изображение. Я на самом деле хочу, чтобы только последняя ревизия, т.е. последний документ в массиве ревизий, сравнивалась с родительским документом, а поле, с которым нужно сравнивать, - metadata.formData.mergeStatus.status
.
. Я хочу, чтобы те документы _id
s, где присутствовал последний документв массиве есть поле, отличное от соответствующего поля его родительского документа, если вообще существует массив ревизий.
Я новичок в 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