【问题标题】:How can I get the data from a collection with multiple-level object arrays in MongoDB如何从 MongoDB 中具有多级对象数组的集合中获取数据
【发布时间】:2022-11-04 15:49:05
【问题描述】:

几天后我才开始使用 MongoDB,这是我的收藏:

{
    PlayerUid:1
    ListData:
    [
        {
            Id:100
            ListInfo:[
                {
                    Uid:1,
                    content:"Those I don't care"
                },
                {
                    Uid:2,
                    content:"Those I don't care"
                },
                {
                    Uid:3,
                    content:"Those I don't care"
                },
                {
                    Uid:4,
                    content:"Those I don't care"
                }
            ]
        },
        {
            Id:101
            ListInfo:[
                {
                    Uid:5,
                    content:"Which I wanted"
                },
                {
                    Uid:6,
                    content:"Those I don't care"
                },
                {
                    Uid:7,
                    content:"Those I don't care"
                },
                {
                    Uid:8,
                    content:"Those I don't care"
                }
            ]
        }
    ]
},
{
    PlayerUid:2
    ListData:
    [
        {
            Id:100
            ListInfo:[
                {
                    Uid:9,
                    content:"Those I don't care"
                },
                {
                    Uid:10,
                    content:"Those I don't care"
                },
                {
                    Uid:11,
                    content:"Those I don't care"
                },
                {
                    Uid:12,
                    content:"Those I don't care"
                }
            ]
        },
        {
            Id:101
            ListInfo:[
                {
                    Uid:13,
                    content:"Those I don't care"
                },
                {
                    Uid:14,
                    content:"Those I don't care"
                },
                {
                    Uid:15,
                    content:"Those I don't care"
                },
                {
                    Uid:16,
                    content:"Those I don't care"
                }
            ]
        }
    ]
}

我想获取条件 PlayerUid = 1, Id:101 , Uid = 5 的数据。

我试过了

findOne({ PlayerUid: 1}, { ListData: { $elemMatch: { Id: 101 } } })

我得到了

{
  ListData: [ { Id: 101, ListInfo: [Array] } ]
}

然后我卡住了,我不知道如何获取或归档 ListInfo 中的数据。 我的预期是这样的

{
    Uid:5,
    content:"Which I wanted"
}
or
{
    PlayerUid:1
    ListData:
    [
        {
            Id:100
            ListInfo:
            [
                {
                    Uid:5,
                    content:"Which I wanted"
                }
            ]
        }
    ]
}

那可能吗?

Ps:这是我的第一篇文章,对我在这里做错的事情感到抱歉。

【问题讨论】:

    标签: mongodb mongoose nestjs


    【解决方案1】:

    你应该尝试:

    findOne({ PlayerUid: 1, 'ListData.Id': 101, 'ListData.ListInfo.content': 'Which I wanted' })
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2020-04-06
      • 1970-01-01
      • 1970-01-01
      • 2016-10-15
      • 1970-01-01
      • 2019-03-20
      • 2021-07-30
      相关资源
      最近更新 更多