基于另一个字段的值在MongoDB中投影一个字段
我在MongoDB 4集合中拥有以下文档:基于另一个字段的值在MongoDB中投影一个字段,mongodb,Mongodb,我在MongoDB 4集合中拥有以下文档: { "_id": <ObjectID>, "active_version": "3", "versions": { "1": "The first very long document", "2": "The second very long document", "3": "The third very long document" } } { “_id”:, “活动版本”:“3”,
{
"_id": <ObjectID>,
"active_version": "3",
"versions": {
"1": "The first very long document",
"2": "The second very long document",
"3": "The third very long document"
}
}
{
“_id”:,
“活动版本”:“3”,
“版本”:{
“1”:“第一份很长的文件”,
“2”:“第二个很长的文件”,
“3”:“第三份很长的文件”
}
}
集合中有许多这样的文档,每个文档可能有多个版本
查询此文档时,我只想检索活动版本的文本,例如“第三个很长的文档”。如何实现这一点?您可以使用将版本转换为k-v对数组,然后使用和获得第一个匹配版本:
db.col.aggregate([
{
$project: {
current_version: {
$let: {
vars: {
version: {
$arrayElemAt: [
{
$filter: {
input: { $objectToArray: "$versions" },
as: "v",
cond: { $eq: [ "$$v.k", "$active_version" ] }
}
}
,0]
}
},
in: "$$version.v"
}
}
}
}
])
产出:
{ "_id" : ..., "current_version" : "The third very long document" }
它表示活动版本=版本。3
?json格式的预期输出应该是什么?确切地说,确切的json格式并不重要,但我希望它只返回版本中的字符串。3