来自内部文档数组的Mongoose唯一值

时间:2015-12-02 12:44:38

标签: arrays node.js mongodb mongoose

我有这样的架构:

User = {
    field1: {type: String},
    field2: {type: String},
    field3: [
        {
            field4: {type: String},
            field5: {type: String},
            field6: {type: String}
        }
    ]
}

DB中有多个用户,他们可以在嵌套文档数组中拥有相同的对象。数组中的对象对每个用户都是唯一的,但是有几个用户可以有重复项。

所以,问题是:我需要mongoose返回[{field5:...,field6:...}]的数组,其中没有重复项。我的意思是,我需要一个不是来自1个用户的唯一数组,我需要收集数据库中所有用户的所有唯一field5,field6对象。

示例:

User1 = {
    name: "Andrew",
    surname: "Pavlov"
    orgInfo: [
        {orgId: "orgId-1", INN: "inn-1", KPP: "kpp-1"},
        {orgId: "orgId-2", INN: "inn-2", KPP: "kpp-2"},
        {orgId: "orgId-3", INN: "inn-3", KPP: "kpp-3"},
    ]
}

User2 = {
    name: "John",
    surname: "Doe"
    orgInfo: [
        {orgId: "orgId-2", INN: "inn-2", KPP: "kpp-2"},
        {orgId: "orgId-4", INN: "inn-4", KPP: "kpp-4"},
    ]
}

User3 = {
    name: "Vasya",
    surname: "Pupkin"
    orgInfo: [
        {orgId: "orgId-1", INN: "inn-1", KPP: "kpp-1"},
        {orgId: "orgId-5", INN: "inn-5", KPP: "kpp-5"},
        {orgId: "orgId-7", INN: "inn-7", KPP: "kpp-7"},
    ]
}

此集合上的查询应返回:

[
    {INN: "inn-1", KPP: "kpp-1"},
    {INN: "inn-2", KPP: "kpp-2"},
    {INN: "inn-3", KPP: "kpp-3"},
    {INN: "inn-4", KPP: "kpp-4"},
    {INN: "inn-5", KPP: "kpp-5"},
    {INN: "inn-7", KPP: "kpp-7"}
]

0 个答案:

没有答案