如何在MongoDB中获取一些数组文档

时间:2015-10-11 07:38:07

标签: arrays mongodb mongodb-query spring-data-mongodb mongodb-java

我有收集"用户"其中存储了用户名,密码和问题。 "问题"是一系列文件。我想向所有用户提出一些问题,即用户名,密码和一系列问题(某些部分)我如何从控制台或java中做到这一点? enter image description here

在这里,我想获得用户名,密码和第一个问题文件{问题:" dawdaw",回答:0}

2 个答案:

答案 0 :(得分:1)

您可以像这样使用切片

db.users.find({},{"questions":{$slice:1}})

希望它会有所帮助

答案 1 :(得分:1)

使用 $elemMatch 投影来获得所需的结果。以下 find() 操作会查询 $elemMatch 投影仅返回questions数组的第一个匹配元素的所有文档question字段的值为"dawdaw"answered的值为0

db.users.find({},
    { 
        "username": 1, "password": 1,
        "questions": { 
            "$elemMatch": { 
                "question" : "dawdaw",
                "answered" : 0
            } 
        } 
    }
);

从给出的样本中,操作返回以下文档:

/* 0 */
{
    "_id" : ObjectId("561a84ffaa233b38d803509a"),
    "username" : "asd@mail.ru",
    "password" : "asd",
    "questions" : [ 
        {
            "question" : "dawdaw",
            "answered" : 0
        }
    ]
}