【问题标题】:MongoDB get all values of 1 fieldMongoDB获取1个字段的所有值
【发布时间】:2016-04-06 19:14:41
【问题描述】:

所以我知道在 mongodb 中,我可以获取所有值然后遍历它们,但我想知道在 mongodb 中是否有一个选项可以只获取某个字段。

例如,假设我的收藏结构如下:

{_id:
    {
    field1,field2,field3}
    }
{description:
    {
    field1,field2,field3,
    data:{
    field1,field2,field3
    }
    }
    }
{otherdata:
{field1,field2,field3}
}

现在,我需要 description.data.field1 的值,所以有什么建议吗?

到目前为止,我已经尝试使用以下命令:

db.module.collection.description.data.find()
db.module.collection.description.find({'data':1})
db.module.collection.find('description.data.data':1})

但很明显,它们不起作用。

有什么建议吗?

【问题讨论】:

    标签: mongodb mongodb-query nested-queries database


    【解决方案1】:

    首先,您的 JSON 结构不正确。正确的结构应该是:

    {
    _id:{
        field1: "",
        field2: "",
        field3: ""
    },
    description:{
        field1: "",
        field2: "",
        field3: "",
        data:{
            field1: "",
            field2: "",
            field3: ""
        }
    },
    otherdata:{
        field1: "",
        field2: "",
        field3: ""
    }
    }
    

    现在你需要什么,你可以使用Projections

    类似这样的:

    db.collection.find({}, {description.data.field1: 1})
    

    【讨论】:

    • 我试过了,但后来我得到的数据如下:description,_id 出于某种原因。我认为数据可能实际上是引用,所以我尝试将其打印为 json 数组,但得出相同的结论。知道为什么会这样吗?
    • 抱歉,我刚刚检查了一下,由于某种原因我在做 find_one 甚至没有注意到,它给了我第一个仅用于测试的数组,因此我的输出搞砸了。非常感谢!
    猜你喜欢
    • 2021-02-27
    • 2022-08-24
    • 2023-01-13
    • 1970-01-01
    • 2022-12-16
    • 1970-01-01
    • 1970-01-01
    • 2014-06-09
    • 1970-01-01
    相关资源
    最近更新 更多