Làm cách nào để lọc dữ liệu trong nút js mongodb?

Xin chào các bạn, trong bài đăng này chúng ta sẽ xem cách giải quyết How To Filter Data From Mongodb Date In Reactjs trong lập trình

ar moment = require ('moment')

 function previous_year_artist(req, res, next) {
        var dateTimeTofilter = moment().subtract(1, 'year');
        var filter = {
            "date_added": {
                $gte: new Date(dateTimeTofilter._d)
            }
        };
        db.collection.find(
            filter
        ).toArray(function(err, result) {
            if (err) return next(err);
            res.send(result);
        });

    }

Bằng cách kiểm tra các trường hợp thực tế khác nhau, chúng tôi đã chỉ ra cách khắc phục lỗi Cách lọc dữ liệu từ ngày Mongodb trong Reactjs

Dự án này là một ứng dụng web nodejs đảm bảo điểm cuối api để lọc dữ liệu từ mongodb qua express. js

Bạn sẽ cần tải xuống và cài đặt gói và nút npm. js sau khi bạn tải xuống repo bằng lệnh git clone

Tôi khuyên bạn nên sử dụng ứng dụng máy tính để bàn github để quản lý tất cả các kho lưu trữ github và hoạt động git của bạn và Visual Studio Code nhẹ cho IDE

https. //máy tính để bàn. github. com/

https. //mã số. Visual Studio. com/

Hướng dẫn sử dụng

Trước khi bạn xây dựng và chạy dự án nút js của mình, bạn cần cài đặt các phụ thuộc bằng lệnh bên dưới

npm install

Khi bạn đã cài đặt các phụ thuộc, thì bạn có thể chạy dự án của mình bằng lệnh bên dưới trên thiết bị đầu cuối

npm run start

Bây giờ bạn đã sẵn sàng gửi các yêu cầu HTTP POST tới

localhost:8080

Tôi đã sử dụng công cụ Postman để gửi các yêu cầu http. Người đưa thư rất dễ dàng xem các yêu cầu và phản hồi trên các điểm cuối api. Bạn có thể tải về và sử dụng tại

https. //www. người phát thơ. com/

Bạn cần thêm 4 khóa và giá trị vào loại x-www-form-encoded trong phần thân


  startDate: "2016-01-26",
  endDate: "2018-02-02",
  minCount: 2700,
  maxCount: 3000

Sau khi bạn đăng yêu cầu http với các thông số cơ thể ở trên, bạn sẽ nhận được phản hồi giống như bên dưới

Truy vấn các bộ sưu tập MongoDB qua nút Azure Mobile Service. phụ trợ js

Làm cách nào để lọc dữ liệu trong nút js mongodb?
Làm cách nào để lọc dữ liệu trong nút js mongodb?
Làm cách nào để lọc dữ liệu trong nút js mongodb?

Đăng ngày 23 Tháng Bảy, 2014

Carlos Figueira Kỹ sư phần mềm cao cấp

Trong bài viết trước, tôi đã nói về việc sử dụng các bảng Azure Mobile Services để sử dụng cơ sở dữ liệu Mongo làm lớp lưu trữ thay vì SQL Azure mặc định. Bài đăng cho thấy cách triển khai các thao tác tạo, cập nhật, xóa và đọc đơn giản, nhưng nó không có khả năng truy vấn tốt vì thao tác đọc bảng đang trả về một hoặc tất cả các mục trong bộ sưu tập. Trong bài đăng này, chúng tôi sẽ xem xét một tính năng không có giấy tờ của nút. js nơi chúng tôi có thể nhận các tham số truy vấn do người dùng chuyển và thêm hỗ trợ cho phân trang, sắp xếp, lựa chọn và một số bộ lọc để chúng tôi có thể sử dụng đầy đủ (hoặc hầu hết) bộ sưu tập MongoDB từ một nút. dịch vụ di động js

thành phần truy vấn

Có một số bài đăng cho thấy một nút. js đang truy vấn bộ sưu tập MongoDB, nhưng việc truy vấn được thực hiện thông qua các tham số chuỗi truy vấn tùy chỉnh hoặc được mã hóa cứng trong chính mã đó. Tuy nhiên, một trải nghiệm tốt hơn sẽ là bộ thực thi tôn trọng các tham số truy vấn OData mà máy khách gửi, để mã cho các ứng dụng máy khách có thể được viết một cách tự nhiên hơn. Nói cách khác, khách hàng sẽ có thể viết mã này.
var table = client.GetTable();
var last10Orders = await table
    .OrderByDescending(o => o.OrderDate)
    .Take(10)
    .ToListAsync();
Và thời gian chạy sẽ áp dụng các tùy chọn đó khi truy vấn bộ sưu tập Mongo. Đoạn mã trên gửi chuỗi truy vấn sau trong yêu cầu HTTP.
function read(query, user, request) {
    console.log(query.getComponents());
    request.execute();
}
0. Vấn đề là các tham số truy vấn OData (những tham số bắt đầu bằng '$') không được hiển thị bởi thuộc tính
function read(query, user, request) {
    console.log(query.getComponents());
    request.execute();
}
1 trong đối tượng yêu cầu trên tập lệnh đọc. Tuy nhiên, có một cách để truy xuất những thứ đó trong một thao tác đọc, sử dụng một hàm không có giấy tờ (cho đến khi bài đăng trên blog này) của đối tượng truy vấn hiển thị những thứ đó.
function read(query, user, request) {
    console.log(query.getComponents());
    request.execute();
}
2. Với nó, chúng tôi có thể truy xuất tất cả các tham số OData được gửi bởi máy khách, chẳng hạn như bỏ qua/đầu trang (phân trang), sắp xếp, lựa chọn và lọc. Hãy thay đổi tập lệnh đọc để in ra các thành phần truy vấn
function read(query, user, request) {
    console.log(query.getComponents());
    request.execute();
}
Bây giờ nếu bạn gửi yêu cầu ở trên đến máy chủ và xem nhật ký cho dịch vụ di động của mình, bạn sẽ thấy tất cả thông tin có thể thu được từ các thành phần truy vấn.
npm install
0Các thành phần chứa tất cả thông tin mà chúng tôi cần để đọc các tham số truy vấn OData trong tập lệnh của chúng tôi. Vì vậy, hãy bắt đầu sử dụng chúng

Phân trang (lấy / bỏ qua)

Hãy quay lại bài viết trước để xem chúng ta có gì khi truy xuất nhiều mục từ bộ sưu tập Mongo
npm install
1Chúng tôi đang sử dụng bộ sưu tập. find và nó có thể nhận các tham số bổ sung cho các tùy chọn truy vấn, trong số đó là
function read(query, user, request) {
    console.log(query.getComponents());
    request.execute();
}
3 và
function read(query, user, request) {
    console.log(query.getComponents());
    request.execute();
}
4, tương đương với các tham số OData
function read(query, user, request) {
    console.log(query.getComponents());
    request.execute();
}
5 và
function read(query, user, request) {
    console.log(query.getComponents());
    request.execute();
}
6 tương ứng. Và chúng ta có thể bắt đầu thêm các tùy chọn đó vào phương thức tìm kiếm.
npm install
6Bây giờ nếu chúng tôi gửi yêu cầu tới
function read(query, user, request) {
    console.log(query.getComponents());
    request.execute();
}
7, chúng tôi sẽ chỉ nhận được 5 tài liệu, bỏ qua 3 tài liệu đầu tiên (theo thứ tự bộ sưu tập mặc định – chúng tôi sẽ sớm chuyển sang đặt hàng). Một lưu ý nữa. nếu yêu cầu không chứa tham số truy vấn
function read(query, user, request) {
    console.log(query.getComponents());
    request.execute();
}
5, thì giá trị của
function read(query, user, request) {
    console.log(query.getComponents());
    request.execute();
}
9 sẽ không bằng 0 (giá trị này sẽ có giá trị là 50, là số mục tối đa mặc định được trả về bởi nút. js), vì vậy sẽ an toàn khi kiểm tra giá trị đó khi xác định giới hạn trong các tùy chọn tìm kiếm

đặt hàng

Sử dụng phân trang (bỏ qua/lấy) hiệu quả hơn khi bạn có thể xác định thứ tự thực hiện phân trang. Ví dụ: phân trang theo tên khách hàng, hoặc ngày đặt hàng chẳng hạn. Như chúng ta đã thấy trong đầu ra của các thành phần truy vấn, thứ tự được đưa ra dưới dạng một đối tượng, với các khóa đại diện cho trường và giá trị Boolean đại diện cho thứ tự được yêu cầu tăng dần hay giảm dần. Sau đó, chúng tôi cần định dạng đó ở định dạng mà gói nút MongoDB mong đợi (mảng có tên trường/thứ tự).
npm run start
0Và bây giờ chúng ta có thể thực thi đoạn mã được hiển thị ở đầu bài đăng này –
npm install
00

Lựa chọn

Các tài liệu MongoDB (và các thực thể được lưu trữ trong cơ sở dữ liệu nói chung) thường có nhiều thông tin (thuộc tính/cột) hơn mức cần thiết và việc truy xuất tất cả chúng sẽ tốn chi phí không cần thiết (về băng thông và xử lý). OData và MongoDB hỗ trợ chọn trường nào sẽ được truy xuất và chúng tôi có thể ánh xạ một lần nữa các thành phần truy vấn sang định dạng mà trình điều khiển nút MongoDB mong muốn.
npm run start
2Và bây giờ nếu tất cả những gì chúng tôi muốn là tên của khách hàng trong 10 đơn đặt hàng gần nhất, chúng tôi có thể làm điều đó.
npm install
01

lọc

Thông thường, thay vì yêu cầu tất cả các thành phần của bộ sưu tập (ngay cả khi được phân trang), khách hàng sẽ chỉ yêu cầu một số tài liệu phù hợp với một tiêu chí nhất định. Ví dụ: chúng tôi chỉ muốn các đơn đặt hàng cho khách hàng bắt đầu bằng chữ 'J'.
npm run start
4Bộ lọc ở trên sẽ được gửi dưới dạng tham số truy vấn $filter OData tới máy chủ.
npm install
02. Và nếu chúng tôi ghi nhật ký các thành phần truy vấn, chúng tôi sẽ thấy biểu thức bộ lọc trong giá trị 'queryString' của đối tượng bộ lọc, như được hiển thị bên dưới. Có các thuộc tính khác trong bộ lọc (đối số, loại), nhưng chúng không được sử dụng trong trường hợp này (mã chuyển đổi giữa OData và chuỗi truy vấn được chia sẻ giữa thời gian chạy của máy chủ và SDK máy khách JavaScript; chúng được sử dụng trong .
npm run start
6Và với bộ lọc, giờ đây chúng ta có thể chuyển chúng vào bộ sưu tập. tìm phương thức của nút. thư viện js MongoDB. Tuy nhiên, đây không phải là một nhiệm vụ dễ dàng – bộ lọc được đưa ra dưới dạng một chuỗi, do đó, chúng tôi phải phân tích cú pháp và chuyển đổi nó thành định dạng phù hợp mà trình điều khiển nút mong đợi. Ở đây tôi trình bày cách hỗ trợ một vài cấu trúc (toán tử nhị phân đơn giản, hàm 'startswith'), nhưng việc triển khai hoàn chỉnh có thể sẽ cần phân tích cú pháp chuỗi truy vấn thành cây biểu thức và duyệt qua nó để tạo đối tượng truy vấn MongoDB tương đương, nhưng điều đó sẽ .
npm run start
7Và cùng với đó, giờ đây chúng tôi có thể thực thi các truy vấn khá phức tạp trong MongoDB bằng cách sử dụng tất cả các SDK máy khách dịch vụ di động được hỗ trợ

kết thúc

Trong bài đăng này, tôi đã trình bày một tính năng không có giấy tờ trong đối tượng truy vấn cho phép tập lệnh đọc có quyền truy cập vào các tham số truy vấn OData và cách sử dụng tính năng đó để thực hiện truy vấn phức tạp vào bộ sưu tập MongoDB. Chức năng có thể được cải thiện (ví dụ: hỗ trợ tốt hơn để chuyển đổi bộ lọc lọc chẳng hạn), nhưng nó cho phép kịch bản tôi đã sử dụng trong bài đăng này (và bài trước) để mở rộng cùng một bảng trừu tượng mà tất cả các máy khách hỗ trợ sang các kho lưu trữ phụ trợ khác. Nếu bạn muốn lấy mã đầy đủ cho bài đăng này, bạn có thể tìm thấy nó trong kho mẫu blog của tôi. Như mọi khi, vui lòng để lại nhận xét / đề xuất trong phần nhận xét của bài đăng này hoặc trong diễn đàn MSDN của chúng tôi

Nhà phát triển Mobile Mongodb Node. Thời gian chạy Js

Làm cách nào để nút js sắp xếp dữ liệu trong MongoDB?

Trong MongoDB, phương thức sort() được sử dụng để sắp xếp kết quả theo thứ tự tăng dần hoặc giảm dần. Phương thức sort() sử dụng tham số để xác định thứ tự sắp xếp đối tượng. .
var http = yêu cầu('http');
var MongoClient = yêu cầu('mongodb'). .
MongoClient. .
nếu (err) ném err;
var mysort = { tên. -1 };

Bộ lọc hoạt động như thế nào trong MongoDB?

Bộ lọc sửa đổi truy vấn MongoDB sắp đến để chỉ trả về một tập hợp con các kết quả phù hợp với truy vấn . Bộ lọc thêm các tham số truy vấn bổ sung và loại bỏ các trường khỏi kết quả truy vấn trước khi Atlas App Services chạy truy vấn.

Chúng ta có thể sử dụng MongoDB với nút js không?

MongoDB là một nền tảng dữ liệu định hướng tài liệu đa năng, hiện đại đã được ghép nối rộng rãi với Node. js trong ngăn xếp công nghệ phổ biến như ngăn xếp MEAN (MongoDB, Express. js, AngularJS và Nút. js) và ngăn xếp MERN (MongoDB, Express.

Phương pháp nào được sử dụng để kết nối nút js với MongoDB?

Để kết nối một Nút. js sang MongoDB, chúng ta phải sử dụng thư viện có tên là Mongoose. cầy mangut. connect("mongodb. //máy chủ cục bộ. 27017/collectionName", { useNewUrlParser. đúng, sử dụngUnifiedTopology. đúng });