如何在 MongoDB 中同时使用两个投影?
How can I use two projections in MongoDB at the same time?
我有需要从这种格式中检索数据的文档:
{
"id": ObjectId("alskdjflqkjwr23"),
"field1": {
"morefields": values
},
"field2": {
"morefields": values
},
"field3": {
"morefields": values
},
"field14": {
"morefields": values
},
"importantField": {
"subfield1": values,
"subfield2": values,
"importantArray": [
{
"subsubfield1": values,
"importantSubArray": [
{
"subsubsubfield1": values,
"subsubsubfield2": values
},
{
"subsubsubfield1": values,
"subsubsubfield2": values
}
],
"importantValue": values
},
{
"subsubfield1": values,
"subsubfield2": values,
"subsubfield3": values
}
]
}
}
我需要 importantSubArray 字段中的 importantValue 和元素,但如果没有其他字段中的所有额外数据,我无法查询 return 我需要的内容。我一周前才开始使用 Mongo。
我已经尝试过这个查询,但只有一个投影有效,这取决于我放入它们的顺序。所以我可以 return 仅 importantField 中的数组,但所有 400 个左右的元素,不仅是最后 2 个,或者我可以 return importantField.importantArray 的最后 2 个元素,而且 return 所有其他字段、子字段、子子字段等
db.getCollection("my_data").find({},
{
"importantField.importantArray" : 1.0,
"importantField.importantArray": { $slice: -2 }
}
);
如何让这两者同时工作?谢谢
编辑:
预期的输出应如下所示。我需要 importantSubArray 数组和 importantValue 字段中的元素
{
"importantSubArray": [
{
"stuff": morestuff
},
],
"importantValue": value
我能够将@prasad_ 的评论与切片结合起来,方法是使用聚合并在第一阶段投影我想要的字段,然后在第二阶段进行另一个投影并对最后 2 个元素进行切片。
我有需要从这种格式中检索数据的文档:
{
"id": ObjectId("alskdjflqkjwr23"),
"field1": {
"morefields": values
},
"field2": {
"morefields": values
},
"field3": {
"morefields": values
},
"field14": {
"morefields": values
},
"importantField": {
"subfield1": values,
"subfield2": values,
"importantArray": [
{
"subsubfield1": values,
"importantSubArray": [
{
"subsubsubfield1": values,
"subsubsubfield2": values
},
{
"subsubsubfield1": values,
"subsubsubfield2": values
}
],
"importantValue": values
},
{
"subsubfield1": values,
"subsubfield2": values,
"subsubfield3": values
}
]
}
}
我需要 importantSubArray 字段中的 importantValue 和元素,但如果没有其他字段中的所有额外数据,我无法查询 return 我需要的内容。我一周前才开始使用 Mongo。
我已经尝试过这个查询,但只有一个投影有效,这取决于我放入它们的顺序。所以我可以 return 仅 importantField 中的数组,但所有 400 个左右的元素,不仅是最后 2 个,或者我可以 return importantField.importantArray 的最后 2 个元素,而且 return 所有其他字段、子字段、子子字段等
db.getCollection("my_data").find({},
{
"importantField.importantArray" : 1.0,
"importantField.importantArray": { $slice: -2 }
}
);
如何让这两者同时工作?谢谢
编辑:
预期的输出应如下所示。我需要 importantSubArray 数组和 importantValue 字段中的元素
{
"importantSubArray": [
{
"stuff": morestuff
},
],
"importantValue": value
我能够将@prasad_ 的评论与切片结合起来,方法是使用聚合并在第一阶段投影我想要的字段,然后在第二阶段进行另一个投影并对最后 2 个元素进行切片。