如何在mongodb中找到匹配的记录?

asw*_*yak 5 java find mongodb

我在我的收藏中有一个记录,我想获取id为1的人的详细信息.但我得到的细节是2次而不是1次.

    db.mycollection.insert({"person" : [ { "id":1, "details" : { "name" : "Aswini", "Age" : 10 }}, { "id":2, "details" : { "name" : "Mahesh", "Age" : 11}}]})
Run Code Online (Sandbox Code Playgroud)

然后跑

    > db.mycollection.findOne({"person.id":1},{"person.details":1,"_id":0})
Run Code Online (Sandbox Code Playgroud)

结果是:

    {
        "person" : 
                [
                    {
                        "details" : 
                        {
                         "name" : "Aswini",
                         "Age" : 10
                        }
                    },
                    {
                        "details" : 
                        {
                         "name" : "Mahesh",
                         "Age" : 11
                        }
                    }
                ]
    }
Run Code Online (Sandbox Code Playgroud)

但我需要如下:

    {
    "person" : [
                {
                "details" : {
                            "name" : "Aswini",
                            "Age" : 10
                        }
                }
            ]
    }
Run Code Online (Sandbox Code Playgroud)

不明白哪里弄错了.请你帮忙.我使用的是MongoDB,Java

Ser*_*ruk 0

person是一个数组。如果你想获取这个数组的第一个元素,你应该使用$slice

db.mycollection.findOne({"person.id":1},{"person":{$slice:[0,1]},"_id":0})
Run Code Online (Sandbox Code Playgroud)