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

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


当前回答

来自MongoDB文档:

投影可以显式地包括几个字段。在接下来的操作中,find()方法返回与查询匹配的所有文档。在结果集中,匹配的文档中只返回item和qty字段,默认情况下,返回_id字段。 db.inventory。查找({类型:'食物'},{项目:1,数量:1})

在这个来自Mongo的例子中,返回的文档将只包含item、qty和_id字段。


因此,你应该能够发出这样的声明:

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

上面的语句将选择students集合中的所有文档,返回的文档将只返回roll字段(不包括_id)。

如果我们不提到_id:0,返回的字段将是roll和_id。默认情况下总是显示'_id'字段。因此,我们需要显式地提到_id:0和roll。

其他回答

尝试以下查询:

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

如果你正在使用控制台,你可以添加pretty()使其易于阅读。

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

希望这能有所帮助!!

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

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);

`

查询MongoDB这里的费用是收集和描述是一个字段。

db.getCollection('fees').find({},{description:1,_id:0})
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来屏蔽该字段。

阅读更多

给你,3种方法,从最短到无聊:

db.student.find({}, 'roll _id'); // <--- Just multiple fields name space separated
// OR
db.student.find({}).select('roll _id'); // <--- Just multiple fields name space separated
// OR
db.student.find({}, {'roll' : 1 , '_id' : 1 ); // <---- Old lengthy boring way

删除特定字段的使用-操作符:

db.student.find({}).select('roll -_id') // <--- Will remove id from result