Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/sorting/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Mongodb对文档中的对象数组进行排序,仅对键与特定值匹配的对象进行排序_Mongodb_Sorting - Fatal编程技术网

Mongodb对文档中的对象数组进行排序,仅对键与特定值匹配的对象进行排序

Mongodb对文档中的对象数组进行排序,仅对键与特定值匹配的对象进行排序,mongodb,sorting,Mongodb,Sorting,我有一个mongo文档,如下所示 { "formId": "b5d65e0c-bc3e-451c-8e2e-34796fd93f7d", "data": [{ "label": "MaterialDocument", "key": "MaterialDocument", "uuid&q

我有一个mongo文档,如下所示

{
    "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有一个特定的值