假设我在MongoDB集合上有以下文档结构:
{
"Applications" : [{
"JoinDate" : new Date("10/2/2013 18:06:30"),
"Key" : "shtube",
"Roles" : ["Administrator", "Moderator"]
}],
"Comment" : "Cool",
"ConfirmationKey" : "981c69fe-6fff-47d6-bb82-3b5f1deeef25",
"CreationDate" : new Date("8/2/2013 17:43:42"),
...
}
如何使用MongoCursor中的 SetFields()方法检索(针对性能问题)“Roles”字段?这时我只知道检索子文档并访问“角色”。但我不需要整个子文档信息。
答案 0 :(得分:2)
您可以使用投影仅使用点表示法(使用shell)提取所需的字段:
db.myCollection.find({ "Applications.Roles" : { $exists: true } },
{ "Applications.Roles" : 1 })
在上面的示例中,它只返回包含Applications.Roles结构的文档。
您可以阅读有关投影here的更多信息。
仅供参考:您无法有效地使用LINQ从C#进行投影。它在客户端本地进行投影。
另一种选择是使用$ elemMatch(但是,在这种情况下,如果您没有进行特定查询,它可能不适合您的需要。)