Mongodb对文档中的对象数组进行排序,仅对键与特定值匹配的对象进行排序
我有一个mongo文档,如下所示Mongodb对文档中的对象数组进行排序,仅对键与特定值匹配的对象进行排序,mongodb,sorting,Mongodb,Sorting,我有一个mongo文档,如下所示 { "formId": "b5d65e0c-bc3e-451c-8e2e-34796fd93f7d", "data": [{ "label": "MaterialDocument", "key": "MaterialDocument", "uuid&q
{
"formId": "b5d65e0c-bc3e-451c-8e2e-34796fd93f7d",
"data": [{
"label": "MaterialDocument",
"key": "MaterialDocument",
"uuid": "7f249dea-b51b-435f-b5a4-912bb914c0b5",
"value": 0,
"isMetricField": true,
"unitOfMeasurement": "5ef1b42f2aa78e1211b3e23a",
"dataCaptureStart": 1604169000000,
"dataCaptureEnd": 1604169000000
}, {
"label": "MaterialDocItem",
"key": "MaterialDocItem",
"uuid": "07fd9f63-e093-4d28-86a6-8acf85d3d7da",
"value": "0000",
"isMetricField": false,
"dataCaptureStart": 1604169000000,
"dataCaptureEnd": 1604169000000
}, {
"label": "Material",
"key": "Material",
"uuid": "fa3f4e76-8464-47e5-9727-2f967101c98c",
"value": "0",
"isMetricField": false,
"dataCaptureStart": 1604169000000,
"dataCaptureEnd": 1604169000000
}, {
"label": "Plant",
"key": "Plant",
"uuid": "70d49be5-79a3-4e5c-9f96-080b480e564f",
"value": "0",
"isMetricField": false,
"dataCaptureStart": 1604169000000,
"dataCaptureEnd": 1604169000000
}, {
"label": "StorageLocation",
"key": "StorageLocation",
"uuid": "2def5e2c-7a74-4c24-940d-5b491e94e3a4",
"value": "0",
"isMetricField": false,
"dataCaptureStart": 1604169000000,
"dataCaptureEnd": 1604169000000
}, {
"label": "MovementType",
"key": "MovementType",
"uuid": "2bdb3468-5b9b-4f92-acd8-777eb6afbc73",
"value": "0",
"isMetricField": false,
"dataCaptureStart": 1604169000000,
"dataCaptureEnd": 1604169000000
}, {
"label": "PostingDate",
"key": "PostingDate",
"uuid": "3867444c-f607-481a-88a0-9777ad50fa83",
"value": "2020-11-01T00:00:00",
"isMetricField": false,
"dataCaptureStart": 1604169000000,
"dataCaptureEnd": 1604169000000
}, {
"label": "Production Count",
"key": "QuantityInUnitOfEntry",
"uuid": "53a58b51-8d29-41e6-b83c-2dd6dc394154",
"value": 0,
"isMetricField": true,
"unitOfMeasurement": "5ef1b42f2aa78e1211b3e239",
"dataCaptureStart": 1604169000000,
"dataCaptureEnd": 1604169000000
}, {
"label": "Department",
"key": "Department",
"uuid": "eafcb451-9d09-4c90-b20b-621aa06db684",
"value": "",
"isMetricField": false,
"dataCaptureStart": 1604169000000,
"dataCaptureEnd": 1604169000000
}, {
"label": "UnitOfEntry",
"key": "UnitOfEntry",
"uuid": "6b64a824-0586-4b02-afbc-8e9190b5ce26",
"value": "EA",
"isMetricField": false,
"dataCaptureStart": 1604169000000,
"dataCaptureEnd": 1604169000000
}],
"dataCaptureDate": 1604169000000,
"addedBy": "a307473b-92b3-4429-92c8-cf11ece428e4",
"uuid": "9583a3bf-b9a7-47a5-8455-ff1901ead3bd",
"addedTimestamp": 1607361597,
"updatedTimestamp": 1607361597
}
同一个集合中还有其他类似的文档,我正在对它们执行聚合操作以获取它们的列表
我想在数据数组中按“value”键排序。但我只想对“uuid”匹配某个值的“value”执行排序
例如,我不想对所有文档的所有“value”键执行排序,但让我们假设仅对“value”执行排序,其中“uuid”=“07fd9f63-e093-4d28-86a6-8acf85d3d7da”(数据数组中的第二个对象)
在mongodb中,我们不盲目地对所有键执行排序,但也有一个附加条件,这样的排序是否可能
预期输出如下所示:
[
{
"_id": "5fce64684a37150009c833cd",
"formId": "b5d65e0c-bc3e-451c-8e2e-34796fd93f7d",
"data": [{
"label": "MaterialDocument",
"key": "MaterialDocument",
"uuid": "7f249dea-b51b-435f-b5a4-912bb914c0b5",
"value": 6001038542,
"isMetricField": true,
"unitOfMeasurement": "5ef1b42f2aa78e1211b3e23a",
"dataCaptureStart": 1602873000000,
"dataCaptureEnd": 1602873000000,
"uomName": "Numbers"
},
{
"label": "MaterialDocItem",
"key": "MaterialDocItem",
"uuid": "07fd9f63-e093-4d28-86a6-8acf85d3d7da",
"value": "0001",
"isMetricField": false,
"dataCaptureStart": 1602873000000,
"dataCaptureEnd": 1602873000000
},
{
"label": "Material",
"key": "Material",
"uuid": "fa3f4e76-8464-47e5-9727-2f967101c98c",
"value": "24AR040C01",
"isMetricField": false,
"dataCaptureStart": 1602873000000,
"dataCaptureEnd": 1602873000000
},
{
"label": "Plant",
"key": "Plant",
"uuid": "70d49be5-79a3-4e5c-9f96-080b480e564f",
"value": "1604",
"isMetricField": false,
"dataCaptureStart": 1602873000000,
"dataCaptureEnd": 1602873000000
},
{
"label": "StorageLocation",
"key": "StorageLocation",
"uuid": "2def5e2c-7a74-4c24-940d-5b491e94e3a4",
"value": "TH50",
"isMetricField": false,
"dataCaptureStart": 1602873000000,
"dataCaptureEnd": 1602873000000
},
{
"label": "MovementType",
"key": "MovementType",
"uuid": "2bdb3468-5b9b-4f92-acd8-777eb6afbc73",
"value": "131",
"isMetricField": false,
"dataCaptureStart": 1602873000000,
"dataCaptureEnd": 1602873000000
},
{
"label": "PostingDate",
"key": "PostingDate",
"uuid": "3867444c-f607-481a-88a0-9777ad50fa83",
"value": "2020-10-17T00:00:00",
"isMetricField": false,
"dataCaptureStart": 1602873000000,
"dataCaptureEnd": 1602873000000
},
{
"label": "Production Count",
"key": "QuantityInUnitOfEntry",
"uuid": "53a58b51-8d29-41e6-b83c-2dd6dc394154",
"value": 120,
"isMetricField": true,
"unitOfMeasurement": "5ef1b42f2aa78e1211b3e239",
"dataCaptureStart": 1602873000000,
"dataCaptureEnd": 1602873000000,
"uomName": "PPM"
},
{
"label": "Department",
"key": "Department",
"uuid": "eafcb451-9d09-4c90-b20b-621aa06db684",
"value": "",
"isMetricField": false,
"dataCaptureStart": 1602873000000,
"dataCaptureEnd": 1602873000000
},
{
"label": "UnitOfEntry",
"key": "UnitOfEntry",
"uuid": "6b64a824-0586-4b02-afbc-8e9190b5ce26",
"value": "EA",
"isMetricField": false,
"dataCaptureStart": 1602873000000,
"dataCaptureEnd": 1602873000000
}
],
"dataCaptureDate": 1602873000000,
"addedBy": "a307473b-92b3-4429-92c8-cf11ece428e4",
"uuid": "90dd4950-4535-4a06-9c87-e8784c7379d1",
"addedTimestamp": 1607361640,
"updatedTimestamp": 1607361640,
"formName": "Movement Type 131 - Form",
"formRecordId": "5fc8c9f7123c340009af7785",
"addedByName": "Rivas Ochoa",
"department": "HQ"
},
{...}
]
预期的输出与您看到的集合相同,但添加了一些参数,仅此而已
提前感谢。请您添加预期输出。没有解决此问题的直接功能。添加了预期输出。当我们与您的预期结果进行比较时,该id仍处于第二位。我看不到预期结果的任何差异。我希望对该集合中的所有文档执行排序,而不是对单个文档数据数组执行排序。所以,如果有100个这样的文档,我想得到它们的列表,它们都按“值”排序,其中uuid有一个特定的值