我有收集"用户"其中存储了用户名,密码和问题。 "问题"是一系列文件。我想向所有用户提出一些问题,即用户名,密码和一系列问题(某些部分)我如何从控制台或java中做到这一点?
在这里,我想获得用户名,密码和第一个问题文件{问题:" dawdaw",回答:0}
答案 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
}
]
}