Tìm MongoDB nodejs

Phương thức find() cũng được sử dụng để lọc kết quả trên một tham số cụ thể. Bạn có thể lọc kết quả bằng cách sử dụng đối tượng truy vấn

Thí dụ

Lọc các bản ghi để truy xuất nhân viên cụ thể có địa chỉ là "Delhi"

Tạo một tệp js có tên "query1. js", có đoạn mã sau

Mở command terminal và chạy lệnh sau

Tìm MongoDB nodejs

Nút. js Bộ lọc MongoDB với biểu thức chính quy

Bạn cũng có thể sử dụng biểu thức chính quy để tìm chính xác những gì bạn muốn tìm kiếm. Biểu thức chính quy chỉ có thể được sử dụng để truy vấn chuỗi

mongodb (npm) Tìm bộ sưu tập

JSDoc

http://mongodb.github.io/node-mongodb-native/3.1/api/Collection.html#find

Các hàm mongodb được sử dụng nhiều nhất

  • MongoClient. liên kết

    http. //mongodb. github. io/nút-mongodb-native/3. 1/api/MongoClient. html#. liên kết

  • MongoClient. db

    http. //mongodb. github. io/nút-mongodb-native/3. 1/api/MongoClient. html#db

  • MongoClient. Thoát

    http. //mongodb. github. io/nút-mongodb-native/3. 1/api/MongoClient. html#đóng

  • Db. thu thập

    http. //mongodb. github. io/nút-mongodb-native/3. 1/api/Db. html#bộ sưu tập

  • MongoClient. thu thập
  • con trỏ. toArray,
  • Bộ sưu tập. chènMột,
  • MongoClient. liên kết,
  • MongoClient,
  • Bộ sưu tập. cập nhậtMột,
  • ID đối tượng,
  • liên kết,
  • Bộ sưu tập. tìm một,
  • Db. dropDatabase,
  • Bộ sưu tập. xóaMột,
  • MongoLỗi. thông điệp,
  • Bộ sưu tập. chèn,
  • Bộ sưu tập. chènNhiều,
  • InsertOneWriteOpResult. hoạt động

Phổ biến trong JavaScript

  • chim xanh

    Triển khai Promises/A+ đầy đủ tính năng với hiệu suất đặc biệt tốt

  • yargs

    yargs hiện đại, theo chủ đề cướp biển, kế thừa của người lạc quan

  • phấn

    Kiểu dáng chuỗi đầu cuối được thực hiện đúng

  • khoảng khăc

    Phân tích cú pháp, xác thực, thao tác và hiển thị ngày tháng

  • không đồng bộ

    Các hàm bậc cao hơn và các mẫu phổ biến cho mã không đồng bộ

  • bệnh đa xơ cứng

    Tiện ích chuyển đổi mili giây nhỏ

  • trình phân tích nội dung

    Nút. phần mềm trung gian phân tích cú pháp cơ thể js

  • làm lại

    Thư viện máy khách Redis

  • lời yêu cầu

    Máy khách yêu cầu HTTP được đơn giản hóa

  • Các plugin hàng đầu cho WebStorm

Kết quả cho truy vấn thực sự là một đối tượng con trỏ. Điều này có thể được sử dụng trực tiếp hoặc chuyển đổi thành một mảng

var cursor = collection.find({});
cursor.each(...);

Để cho biết trường nào phải hoặc không được trả lại giá trị trường có thể được sử dụng. Ví dụ: giá trị trường sau

{
  "name": true,
  "title": true
}

truy xuất các trường têntiêu đề (và dưới dạng . _id) but not any others.

Tìm lần xuất hiện đầu tiên với findOne()¶

findOne là một phương thức thuyết phục tìm và trả về kết quả khớp đầu tiên của truy vấn trong khi find trả về thông thường . Sử dụng nó khi bạn chỉ mong đợi một bản ghi, chẳng hạn như khi truy vấn bằng _id hoặc một thuộc tính duy nhất khác.

collection.findOne(query, [fields, [options]], callback);

Ở đâu

  • truy vấn là đối tượng truy vấn hoặc giá trị _id value
  • trường - cho biết trường nào sẽ được đưa vào phản hồi (mặc định là tất cả)
  • tùy chọn - xác định logic bổ sung (tùy chọn sắp xếp, phân trang, v.v. )
  • gọi lại có hai tham số - đối tượng lỗi (nếu xảy ra lỗi) và đối tượng tài liệu.

Thí dụ

collection.findOne({_id: doc_id}, function(err, document) {
  console.log(document.name);
});

giá trị _id¶

Mặc định _id là các giá trị băm nhị phân 12 byte. Bạn có thể thay đổi định dạng bằng các nhà máy sản xuất Khóa chính tùy chỉnh (xem Khóa chính tùy chỉnh trong cơ sở dữ liệu).

Để coi các giá trị _id nhị phân này là các chuỗi, bạn nên chuyển đổi các giá trị nhị phân thành chuỗi hex. Điều này có thể được thực hiện với thuộc tính toHexString .

var idHex = document._id.toHexString();

Chuỗi hex có thể được hoàn nguyên về dạng nhị phân (ví dụ: để thực hiện truy vấn) với ObjectID. tạoFromHexString

{_id: ObjectID.createFromHexString(idHex)}

Khi chèn bản ghi mới, bạn cũng có thể sử dụng các giá trị _id tùy chỉnh mà không cần phải là giá trị băm nhị phân, chẳng hạn như các chuỗi.

collection.insert({_id: "abc", ...});
collection.findOne({_id: "abc"},...);

Bằng cách này, không cần thiết phải chuyển đổi các giá trị _id thành chuỗi hex và ngược lại.

Đối tượng truy vấn¶

Đối tượng truy vấn đơn giản nhất là một đối tượng trống {} phù hợp với mọi bản ghi trong cơ sở dữ liệu.

Để thực hiện một truy vấn đơn giản trong đó một trường phải khớp với một giá trị đã xác định, người ta có thể thực hiện điều đó đơn giản như

________số 8

Truy vấn này khớp với tất cả các bản ghi mà a) có các trường được gọi là tên trường và b) giá trị của nó là “giá trị trường”

Ví dụ: nếu chúng tôi có một bộ sưu tập các bài đăng trên blog trong đó cấu trúc của các bản ghi là {title, tác giả, contents} and we want to retrieve all the posts for a specific author then we can do it like this:

posts = pointer_to_collection;
posts.find({author:"Daniel"}).toArray(function(err, results){
    console.log(results); // output all records
});

Nếu trường được truy vấn nằm bên trong một đối tượng thì cũng có thể được truy vấn. Ví dụ: nếu chúng ta có một bản ghi với cấu trúc sau

var cursor = collection.find({});
cursor.each(...);
0

Sau đó, chúng ta có thể truy vấn trường “tên” như thế này. {"người dùng. Tên". "Đa-ni-ên"}

V˦

Nếu nhiều tên trường được chỉ định, thì đó là truy vấn AND

var cursor = collection.find({});
cursor.each(...);
1

Truy vấn Whis khớp với tất cả các bản ghi trong đó key1 là “value1” và key2 là “value2”

HOẶC LÀ¶

Các truy vấn OR phức tạp hơn một chút nhưng có thể thực hiện được với toán tử $or . Toán tử truy vấn lấy một mảng bao gồm một tập hợp các đối tượng truy vấn và ít nhất một trong số này phải khớp với tài liệu trước khi nó được truy xuất

var cursor = collection.find({});
cursor.each(...);
2

Truy vấn này phù hợp với tất cả các tài liệu mà tác giả là Daniel hoặc Jessica

Để kết hợp các truy vấn AND và OR, bạn chỉ cần sử dụng $or như một trong các trường truy vấn thông thường

var cursor = collection.find({});
cursor.each(...);
3

Điều kiện¶

Toán tử điều kiện < , <= , >, >= and != không thể được sử dụng trực tiếp vì định dạng đối tượng truy vấn không hỗ trợ nó nhưng có thể đạt được điều tương tự với các bí danh của chúng $lt, $lte, $gt, $gte and $ne. When a field value needs to match a conditional, the value must be wrapped into a separate object.

var cursor = collection.find({});
cursor.each(...);
4

Truy vấn này xác định rằng tên trường phải lớn hơn hoặc bằng 100 .

Điều kiện cũng có thể được trộn lẫn để tạo phạm vi

var cursor = collection.find({});
cursor.each(...);
5

Biểu thức chính quy trong truy vấn¶

Các giá trị trường được truy vấn cũng có thể được khớp với các biểu thức chính quy

var cursor = collection.find({});
cursor.each(...);
6

Toán tử truy vấn đặc biệt¶

Ngoài OR và có điều kiện, còn có một số toán tử khác

  • $in - chỉ định một mảng các kết quả có thể khớp, {"name". {$in. [1,2,3]}}
  • $nin - chỉ định một mảng các kết quả khớp không mong muốn
  • $all - giá trị mảng phải phù hợp với điều kiện {"name". {$tất cả. [1,2,3]}}
  • $exists - kiểm tra sự tồn tại của trường {"name". {$tồn tại. đúng}}
  • $mod - kiểm tra modulo {"name". {$mod. {3,2}} giống với "name" % 3 == 2
  • $size - kiểm tra kích thước của một giá trị mảng {"name". {$size. 2}} khớp với tên mảng có 2 phần tử

Truy vấn bên trong đối tượng và mảng¶

Nếu bạn có một tài liệu với các đối tượng/mảng lồng nhau thì các khóa bên trong các đối tượng lồng nhau này vẫn có thể được sử dụng cho các truy vấn

Ví dụ với tài liệu sau

var cursor = collection.find({});
cursor.each(...);
7

không chỉ trường _id có thể được sử dụng làm trường truy vấn - mà cả tên . Điều này có thể được thực hiện khi sử dụng tên trường lồng nhau dưới dạng chuỗi, nối với dấu chấm. . Điều này có thể được thực hiện khi sử dụng tên trường lồng nhau dưới dạng chuỗi, nối với dấu chấm. . Điều này có thể được thực hiện khi sử dụng tên trường lồng nhau dưới dạng chuỗi, nối với dấu chấm. . Điều này có thể được thực hiện khi sử dụng tên trường lồng nhau dưới dạng chuỗi, nối với dấu chấm. . Điều này có thể được thực hiện khi sử dụng tên trường lồng nhau dưới dạng chuỗi, nối với dấu chấm. . Điều này có thể được thực hiện khi sử dụng tên trường lồng nhau dưới dạng chuỗi, nối với dấu chấm. and even title can be used. This can be done when using nested field names as strings, concated with periods.

var cursor = collection.find({});
cursor.each(...);
8

Hoạt động ngay cả bên trong mảng

var cursor = collection.find({});
cursor.each(...);
9

Tùy chọn truy vấn¶

Các tùy chọn truy vấn xác định hành vi của truy vấn

{
  "name": true,
  "title": true
}
0

Phân trang¶

Có thể thực hiện phân trang với các tham số tùy chọn giới hạnbỏ qua

{
  "name": true,
  "title": true
}
1

truy xuất 10 phần tử bắt đầu từ 20

Sắp xếp¶

Sắp xếp có thể đạt được với tham số tùy chọn sắp xếp nhận một mảng tùy chọn sắp xếp

{
  "name": true,
  "title": true
}
2

Với một trường tăng dần, mảng có thể được thay thế bằng tên của trường

{
  "name": true,
  "title": true
}
3

Giải thích¶

Tham số tùy chọn explain biến truy vấn thành truy vấn giải thích.

Con trỏ¶

Các đối tượng con trỏ là kết quả cho các truy vấn và có thể được sử dụng để tìm nạp các trường riêng lẻ từ cơ sở dữ liệu

Làm cách nào để sử dụng find() trong Nodejs?

Phương thức find() trả về tất cả các lần xuất hiện trong vùng chọn . Tham số đầu tiên của phương thức find() là một đối tượng truy vấn. Trong ví dụ này, chúng tôi sử dụng một đối tượng truy vấn trống để chọn tất cả các tài liệu trong bộ sưu tập. Không có tham số nào trong phương thức find() cho bạn kết quả giống như SELECT * trong MySQL.

Làm cách nào để tìm tài liệu trong MongoDB Nodejs?

Bạn có thể truy vấn một tài liệu trong bộ sưu tập với bộ sưu tập . phương thức findOne() . Phương thức findOne() sử dụng tài liệu truy vấn mà bạn cung cấp để chỉ khớp với tập hợp con của các tài liệu trong bộ sưu tập khớp với truy vấn.

Làm cách nào để truy vấn MongoDB bằng Nodejs?

var http = yêu cầu('http');
var MongoClient = yêu cầu('mongodb'). MongoClient;
MongoClient. kết nối (url, chức năng (err, db) {
nếu (err) ném err;
truy vấn var = { địa chỉ. /^L/ };
db. bộ sưu tập ("nhân viên"). tìm (truy vấn). .
nếu (err) ném err;
bảng điều khiển. nhật ký (kết quả);

Làm cách nào để tìm dữ liệu trong MongoDB?

Trong MongoDB, phương thức find() được sử dụng để chọn tài liệu trong bộ sưu tập và trả lại con trỏ cho tài liệu đã chọn . Con trỏ nghĩa là một con trỏ trỏ đến một tài liệu, khi chúng ta sử dụng phương thức find() nó sẽ trả về một con trỏ trên các tài liệu đã chọn và trả về từng cái một.