菜单
×
   ❮     
HTML CSS JAVASCRIPT SQL PYTHON JAVA PHP HOW TO W3.CSS C C++ C# BOOTSTRAP REACT MYSQL JQUERY EXCEL XML DJANGO NUMPY PANDAS NODEJS R TYPESCRIPT ANGULAR GIT POSTGRESQL MONGODB ASP AI GO KOTLIN SASS VUE DSA GEN AI SCIPY AWS CYBERSECURITY DATA SCIENCE
     ❯   

Node.js MongoDB 查询


在 MongoDB 中,我们使用 findfindOne 方法来查找集合中的数据。

这就像在 MySQL 数据库的表中查找数据时使用 SELECT 语句一样。

查找单个文档 (Find One)

要从 MongoDB 中的集合中选择数据,我们可以使用 findOne() 方法。

findOne() 方法返回选择中的第一个匹配项。

findOne() 方法的第一个参数是一个查询对象。在此示例中,我们使用一个空的查询对象,它会选择集合中的所有文档(但只返回第一个文档)。

示例

查找 customers 集合中的第一个文档

var MongoClient = require('mongodb').MongoClient;
var url = "mongodb://:27017/";

MongoClient.connect(url, function(err, db) {
  if (err) throw err;
  var dbo = db.db("mydb");
  dbo.collection("customers").findOne({}, function(err, result) {
    if (err) throw err;
    console.log(result.name);
    db.close();
  });
});
运行示例 »

将上面的代码保存在一个名为 "demo_mongodb_findone.js" 的文件中并运行该文件。

运行 "demo_mongodb_findone.js"

C:\Users\您的名字>node demo_mongodb_findone.js

这将产生以下结果:

Company Inc.


查找所有文档 (Find All)

要从 MongoDB 中的表选择数据,我们也可以使用 find() 方法。

find() 方法返回选择中的所有匹配项。

find() 方法的第一个参数是一个查询对象。在此示例中,我们使用一个空的查询对象,它会选择集合中的所有文档。

在 find() 方法中不带参数与 MySQL 中的 SELECT * 效果相同。

示例

查找 customers 集合中的所有文档

var MongoClient = require('mongodb').MongoClient;
var url = "mongodb://:27017/";

MongoClient.connect(url, function(err, db) {
  if (err) throw err;
  var dbo = db.db("mydb");
  dbo.collection("customers").find({}).toArray(function(err, result) {
    if (err) throw err;
    console.log(result);
    db.close();
  });
});
运行示例 »

将上面的代码保存在一个名为 "demo_mongodb_find.js" 的文件中并运行该文件。

运行 "demo_mongodb_find.js"

C:\Users\您的名字>node demo_mongodb_find.js

这将产生以下结果:

[
  { _id: 58fdbf5c0ef8a50b4cdd9a84 , name: 'John', address: 'Highway 71'},
  { _id: 58fdbf5c0ef8a50b4cdd9a85 , name: 'Peter', address: 'Lowstreet 4'},
  { _id: 58fdbf5c0ef8a50b4cdd9a86 , name: 'Amy', address: 'Apple st 652'},
  { _id: 58fdbf5c0ef8a50b4cdd9a87 , name: 'Hannah', address: 'Mountain 21'},
  { _id: 58fdbf5c0ef8a50b4cdd9a88 , name: 'Michael', address: 'Valley 345'},
  { _id: 58fdbf5c0ef8a50b4cdd9a89 , name: 'Sandy', address: 'Ocean blvd 2'},
  { _id: 58fdbf5c0ef8a50b4cdd9a8a , name: 'Betty', address: 'Green Grass 1'},
  { _id: 58fdbf5c0ef8a50b4cdd9a8b , name: 'Richard', address: 'Sky st 331'},
  { _id: 58fdbf5c0ef8a50b4cdd9a8c , name: 'Susan', address: 'One way 98'},
  { _id: 58fdbf5c0ef8a50b4cdd9a8d , name: 'Vicky', address: 'Yellow Garden 2'},
  { _id: 58fdbf5c0ef8a50b4cdd9a8e , name: 'Ben', address: 'Park Lane 38'},
  { _id: 58fdbf5c0ef8a50b4cdd9a8f , name: 'William', address: 'Central st 954'},
  { _id: 58fdbf5c0ef8a50b4cdd9a90 , name: 'Chuck', address: 'Main Road 989'},
  { _id: 58fdbf5c0ef8a50b4cdd9a91 , name: 'Viola', address: 'Sideway 1633'}
]

查找部分字段 (Find Some)

find() 方法的第二个参数是 projection 对象,它描述了结果中应包含哪些字段。

此参数是可选的,如果省略,则结果中将包含所有字段。

示例

返回 customers 集合中所有文档的 "name" 和 "address" 字段

var MongoClient = require('mongodb').MongoClient;
var url = "mongodb://:27017/";

MongoClient.connect(url, function(err, db) {
  if (err) throw err;
  var dbo = db.db("mydb");
  dbo.collection("customers").find({}, { projection: { _id: 0, name: 1, address: 1 } }).toArray(function(err, result) {
    if (err) throw err;
    console.log(result);
    db.close();
  });
});
运行示例 »

将上面的代码保存在一个名为 "demo_mongodb_find_fields.js" 的文件中并运行该文件。

运行 "demo_mongodb_find_fields.js"

C:\Users\您的名字>node demo_mongodb_find_fields.js

这将产生以下结果:

[
  { name: 'John', address: 'Highway 71'},
  { name: 'Peter', address: 'Lowstreet 4'},
  { name: 'Amy', address: 'Apple st 652'},
  { name: 'Hannah', address: 'Mountain 21'},
  { name: 'Michael', address: 'Valley 345'},
  { name: 'Sandy', address: 'Ocean blvd 2'},
  { name: 'Betty', address: 'Green Grass 1'},
  { name: 'Richard', address: 'Sky st 331'},
  { name: 'Susan', address: 'One way 98'},
  { name: 'Vicky', address: 'Yellow Garden 2'},
  { name: 'Ben', address: 'Park Lane 38'},
  { name: 'William', address: 'Central st 954'},
  { name: 'Chuck', address: 'Main Road 989'},
  { name: 'Viola', address: 'Sideway 1633'}
]

您不能在同一个对象中同时指定 0 和 1 值(除非其中一个字段是 _id 字段)。如果您指定一个值为 0 的字段,所有其他字段都将获得值 1,反之亦然。

示例

此示例将排除 "address" 字段的输出

var MongoClient = require('mongodb').MongoClient;
var url = "mongodb://:27017/";

MongoClient.connect(url, function(err, db) {
  if (err) throw err;
  var dbo = db.db("mydb");
  dbo.collection("customers").find({}, { projection: { address: 0 } }).toArray(function(err, result) {
    if (err) throw err;
    console.log(result);
    db.close();
  });
});
运行示例 »

要排除 _id 字段,您必须将其值设置为 0。

示例

此示例将只返回 "name" 字段

var MongoClient = require('mongodb').MongoClient;
var url = "mongodb://:27017/";

MongoClient.connect(url, function(err, db) {
  if (err) throw err;
  var dbo = db.db("mydb");
  dbo.collection("customers").find({}, { projection: { _id: 0, name: 1 } }).toArray(function(err, result) {
    if (err) throw err;
    console.log(result);
    db.close();
  });
});
运行示例 »

示例

此示例将产生与第一个示例相同的结果:返回所有字段,但排除 _id 字段。

var MongoClient = require('mongodb').MongoClient;
var url = "mongodb://:27017/";

MongoClient.connect(url, function(err, db) {
  if (err) throw err;
  var dbo = db.db("mydb");
  dbo.collection("customers").find({}, { projection: { _id: 0 } }).toArray(function(err, result) {
    if (err) throw err;
    console.log(result);
    db.close();
  });
});
运行示例 »

示例

如果您在同一个对象中同时指定 0 和 1 值(_id 字段除外),您会收到一个错误。

var MongoClient = require('mongodb').MongoClient;
var url = "mongodb://:27017/";

MongoClient.connect(url, function(err, db) {
  if (err) throw err;
  var dbo = db.db("mydb");
  dbo.collection("customers").find({}, { projection: { name: 1, address: 0 } }).toArray(function(err, result) {
    if (err) throw err;
    console.log(result);
    db.close();
  });
});
运行示例 »

结果对象

正如您从上面示例的结果中看到的,结果可以转换为一个数组,其中每个文档都是一个对象。

要返回例如第三个文档的地址,只需引用第三个数组对象的 address 属性。

示例

返回第三个文档的地址

console.log(result[2].address);

这将产生以下结果:

Apple st 652

×

联系销售

如果您想将 W3Schools 服务用于教育机构、团队或企业,请发送电子邮件给我们
sales@w3schools.com

报告错误

如果您想报告错误,或想提出建议,请发送电子邮件给我们
help@w3schools.com

W3Schools 经过优化,旨在方便学习和培训。示例可能经过简化,以提高阅读和学习体验。教程、参考资料和示例会不断审查,以避免错误,但我们无法保证所有内容的完全正确性。使用 W3Schools 即表示您已阅读并接受我们的使用条款Cookie 和隐私政策

版权所有 1999-2024 Refsnes Data。保留所有权利。W3Schools 由 W3.CSS 提供支持