在我的MongoDB中,我有一个学生集合,其中有10条记录,字段为name和roll。这个收藏的一个记录是:
{
"_id" : ObjectId("53d9feff55d6b4dd1171dd9e"),
"name" : "Swati",
"roll" : "80",
}
我想检索字段滚动仅为集合中的所有10条记录,因为我们会在传统数据库中使用:
SELECT roll FROM student
我浏览了很多博客,但所有的结果都是一个必须有WHERE子句的查询,例如:
db.students.find({ "roll": { $gt: 70 })
查询等价于:
SELECT * FROM student WHERE roll > 70
我的要求是只找到一个钥匙,不附带任何条件。它的查询操作是什么。
为了更好地理解,我写了类似的MySQL查询。
Selecting specific fields
MongoDB: db.collection_name.find({},{name:true,email:true,phone:true});
SELECT name,email,phone FROM table_name;
Selecting specific fields with where clause
MongoDB: db.collection_name.find({email:'you@email.com'},{name:true,email:true,phone:true});
SELECT name,email,phone FROM table_name WHERE email = 'you@email.com';
db.<collection>.find({}, {field1: <value>, field2: <value> ...})
在你的例子中,你可以这样做:
db.students.find({}, {"roll":true, "_id":false})
投影
类型中返回哪些字段
匹配的文件。类型的文档为参数
下面的形式:
{ field1: <value>, field2: <value> ... }
<值>可以是以下任意值:
1或true表示在返回文档中包含该字段。
0或false排除该字段。
NOTE
对于_id字段,您不必显式地指定_id: 1到
返回_id字段。find()方法总是返回_id字段
除非指定_id: 0来屏蔽该字段。
阅读更多
虽然gowtham的回答是完整的,但值得注意的是,这些命令可能会因API的不同而不同(对于那些不使用mongo的shell的人来说)。
详细信息请参考文档链接。
例如,Nodejs有一个叫做投影的方法,你可以把它附加到你的find函数中来进行投影。
按照相同的示例设置,可以在Node中使用如下命令:
db.student.find ({}) . project({卷:1})
SELECT _id, rollfrom student
或
db.student.find({})。项目({roll:1, _id: 0})
从学生中选择卷
等等。
同样,对于nodejs用户,不要忘记(如果你以前使用过这个API,你应该已经熟悉了)使用toArray来附加你的.then命令。