如何在MongoDB集合中选择所有文档的单个字段?
如何在MongoDB集合中选择所有文档的单个字段?
在我的MongoDB中,我有一个学生集合,有10条记录,具有字段name
和roll
。这个集合的一条记录是:
{ "_id" : ObjectId("53d9feff55d6b4dd1171dd9e"), "name" : "Swati", "roll" : "80", }
我想仅检索集合中的所有10条记录的roll
字段,就像我们在传统数据库中使用的那样:
SELECT roll FROM student
我阅读了很多博客,但是所有结果都将得到一个必须在其中包含WHERE
条件的查询,例如:
db.students.find({ "roll": { $gt: 70 })
查询等价于:
SELECT * FROM student WHERE roll > 70
我的要求是仅查找一个键,而不需要任何条件。那么,查询操作是什么。
从表中获取所有数据
db.student.find({})
SELECT * FROM student
从表中获取除了_id以外的所有数据
db.student.find({}, {_id:0})
SELECT name, roll FROM student
从一个字段中获取带有_id的所有数据
db.student.find({}, {roll:1})
SELECT id, roll FROM student
从一个字段中获取除了_id以外的所有数据
db.student.find({}, {roll:1, _id:0})
SELECT roll FROM student
使用where子句查找指定的数据
db.student.find({roll: 80})
SELECT * FROM students WHERE roll = '80'
使用where子句和大于条件查找数据
db.student.find({ "roll": { $gt: 70 }}) // $gt is greater than
SELECT * FROM student WHERE roll > '70'
使用where子句和大于或等于条件查找数据
db.student.find({ "roll": { $gte: 70 }}) // $gte is greater than or equal
SELECT * FROM student WHERE roll >= '70'
使用where子句和小于或等于条件查找数据
db.student.find({ "roll": { $lte: 70 }}) // $lte is less than or equal
SELECT * FROM student WHERE roll <= '70'
使用where子句和小于条件查找数据
db.student.find({ "roll": { $lt: 70 }}) // $lt is less than
SELECT * FROM student WHERE roll < '70'
从 MongoDB 文档 中得到以下信息:
投影可以显式地包括多个字段。在下面的操作中,
find()
方法返回所有与查询匹配的文档。在结果集中,匹配的文档仅返回 item 和 qty 字段以及默认的 _id 字段。
db.inventory.find( { type: 'food' }, { item: 1, qty: 1 } )
在这个来自 Mongo 团队的例子中,返回的文档仅包含 item、qty 和 _id 字段。
因此,您应该能够发出类似以下的语句:
db.students.find({}, {roll:1, _id:0})
以上语句将选择 students 集合中的所有文档,并且返回的文档仅会返回 roll 字段(不包括 _id)。
如果我们不提及 _id:0
,返回的字段将是 roll 和 _id。'_id' 字段总是默认显示的。因此,我们需要明确指定 _id:0
以及 roll。