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

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


当前回答

单次更新: db.collection_name。更新({field_name_1:(“价值”)},{$设置:{field_name_2:“new_value}});

对于MultiUpdate: db.collection_name。updateMany ({field_name_1:(“价值”)},{$设置:{field_name_2:“new_value}});

确保索引正确。

其他回答

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

阅读更多

得到学生的名字

student-details = db.students.find({{ "roll": {$gt: 70} },{"name": 1, "_id": False})

获取学生的姓名和名单

student-details = db.students.find({{ "roll": {$gt: 70}},{"name": 1,"roll":1,"_id": False})

给你,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

为了更好地理解,我写了类似的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';

如果你在NodeJs中使用MongoDB驱动程序,那么上述答案可能不适合你。您将不得不执行类似的操作,以仅获得选定的属性作为响应。

import { MongoClient } from "mongodb";

// Replace the uri string with your MongoDB deployment's connection string.
const uri = "<connection string uri>";
const client = new MongoClient(uri);

async function run() {
  try {
    await client.connect();
    const database = client.db("sample_mflix");
    const movies = database.collection("movies");

    // Query for a movie that has the title 'The Room'
    const query = { title: "The Room" };

    const options = {
      // sort matched documents in descending order by rating
      sort: { "imdb.rating": -1 },
      // Include only the `title` and `imdb` fields in the returned document
      projection: { _id: 0, title: 1, imdb: 1 },
    };

    const movie = await movies.findOne(query, options);

    /** since this method returns the matched document, not a cursor, 
     * print it directly 
    */
    console.log(movie);
  } finally {
    await client.close();
  }
}

run().catch(console.dir);

这段代码是从实际的MongoDB文档中复制的,你可以在这里查看。 https://docs.mongodb.com/drivers/node/current/usage-examples/findOne/