Menu
×
   ❮     
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 中,我们使用 **find** 和 **findOne** 方法来查找集合中的数据。

就像 **SELECT** 语句用于查找 MySQL 数据库中表的中的数据一样。

查找一个

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

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

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

示例

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

var MongoClient = require('mongodb').MongoClient;
var url = "mongodb://127.0.0.1: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.


查找所有

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

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

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

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

示例

在 customers 集合中查找所有文档

var MongoClient = require('mongodb').MongoClient;
var url = "mongodb://127.0.0.1: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() 方法的第二个参数是 projection 对象,它描述了结果中要包含哪些字段。

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

示例

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

var MongoClient = require('mongodb').MongoClient;
var url = "mongodb://127.0.0.1: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://127.0.0.1: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://127.0.0.1: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://127.0.0.1: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://127.0.0.1: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

×

Contact Sales

If you want to use W3Schools services as an educational institution, team or enterprise, send us an e-mail:
[email protected]

Report Error

If you want to report an error, or if you want to make a suggestion, send us an e-mail:
[email protected]

W3Schools is optimized for learning and training. Examples might be simplified to improve reading and learning. Tutorials, references, and examples are constantly reviewed to avoid errors, but we cannot warrant full correctness of all content. While using W3Schools, you agree to have read and accepted our terms of use, cookie and privacy policy.

Copyright 1999-2024 by Refsnes Data. All Rights Reserved. W3Schools is Powered by W3.CSS.