在我的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

我的要求是只找到一个钥匙,不附带任何条件。它的查询操作是什么。


当前回答

我认为mattingly890有正确的答案,这里是另一个例子以及模式/命令

db.collection。Find ({}, {your_key:1, _id:0})

> db.mycollection.find().pretty();

{
    "_id": ObjectId("54ffca63cea5644e7cda8e1a"),
    "host": "google",
    "ip": "1.1.192.1"
}
db.mycollection.find({},{ "_id": 0, "host": 1 }).pretty();

其他回答

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来屏蔽该字段。

阅读更多

出于教育目的,你也可以用以下任何一种方法:

1.

    var query = {"roll": {$gt: 70};
    var cursor = db.student.find(query);
    cursor.project({"roll":1, "_id":0});

2.

    var query = {"roll": {$gt: 70};
    var projection = {"roll":1, "_id":0};
    var cursor = db.student.find(query,projection);

`

db.student.find({}, {"roll":1, "_id":0})

它等于-

从学生中选择卷

db.student。Find ({}, {"roll":1, "name":1, "_id":0})

它等于-

从学生中选择卷名

为了更好地理解,我写了类似的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.student.find({},{"roll":1})

where子句中没有条件,即在第一个花括号内。 下一个花括号内:结果中需要的投影字段名称列表,1表示特定字段是查询结果的一部分