Hướng dẫn how do i get mongodb data? - làm cách nào để lấy dữ liệu mongodb?

Tài liệu về nhà → Bắt đầu với hướng dẫnStart with Guides

Trong hướng dẫn này, bạn sẽ học cách lấy dữ liệu từ MongoDB.

Thời gian cần thiết: 10 phút

  • Một chuỗi kết nối với triển khai MongoDB của bạn.

  • Bộ dữ liệu mẫu được tải vào cụm của bạn.

  • Một trình điều khiển MongoDB đã cài đặt.

Trong khối mã này có một nhận xét để thay thế URI kết nối bằng của riêng bạn. Đảm bảo thay thế chuỗi URI bằng chuỗi kết nối ATLAS của bạn.

Chuyển sang cơ sở dữ liệu và bộ sưu tập bạn muốn truy vấn. Trong trường hợp này, bạn sẽ sử dụng cơ sở dữ liệu

{
"_id" : <value>,
"name" : { "first" : <string>, "last" : <string> }, // embedded document
"birth" : <ISODate>,
"death" : <ISODate>,
"contribs" : [ <string>, ... ], // Array of Strings
"awards" : [
{ "award" : <string>, year: <number>, by: <string> } // Array of embedded documents
...
]
}
0 và bộ sưu tập
{
"_id" : <value>,
"name" : { "first" : <string>, "last" : <string> }, // embedded document
"birth" : <ISODate>,
"death" : <ISODate>,
"contribs" : [ <string>, ... ], // Array of Strings
"awards" : [
{ "award" : <string>, year: <number>, by: <string> } // Array of embedded documents
...
]
}
1.

Dưới đây là mã hoàn chỉnh theo sau là đầu ra mẫu.

Ghi chú

Giá trị

{
"_id" : <value>,
"name" : { "first" : <string>, "last" : <string> }, // embedded document
"birth" : <ISODate>,
"death" : <ISODate>,
"contribs" : [ <string>, ... ], // Array of Strings
"awards" : [
{ "award" : <string>, year: <number>, by: <string> } // Array of embedded documents
...
]
}
2 của bạn sẽ khác với các giá trị được hiển thị.

Nếu bạn đã hoàn thành thành công quy trình trong hướng dẫn này, bạn đã lấy dữ liệu từ MongoDB.

Trong hướng dẫn tiếp theo, bạn sẽ học cách truy xuất dữ liệu từ MongoDB bằng các tiêu chí.

Đối với các hướng dẫn khác của CRUD:

  • Đọc dữ liệu từ MongoDB với các truy vấn

  • Đọc dữ liệu bằng cách sử dụng các toán tử và truy vấn hợp chất

  • Chèn dữ liệu vào MongoDB

  • Cập nhật dữ liệu trong MongoDB

  • Xóa dữ liệu khỏi MongoDB

Tài liệu về nhà → Bắt đầu với hướng dẫnStart with Guides

Trong hướng dẫn trước, đọc dữ liệu bằng MongoDB, bạn đã truy xuất tất cả các tài liệu từ bộ sưu tập

{
"_id" : <value>,
"name" : { "first" : <string>, "last" : <string> }, // embedded document
"birth" : <ISODate>,
"death" : <ISODate>,
"contribs" : [ <string>, ... ], // Array of Strings
"awards" : [
{ "award" : <string>, year: <number>, by: <string> } // Array of embedded documents
...
]
}
3 mà không chỉ định bất kỳ tiêu chí nào mà các tài liệu sẽ đáp ứng.

Trong hướng dẫn này, bạn sẽ truy vấn thu thập và truy xuất các tài liệu phù hợp với các tiêu chí bình đẳng cụ thể, có nghĩa là các giá trị của trường hoặc trường được chỉ định phải khớp.equality criteria, meaning the values of the specified field or fields must match.

Thời gian cần thiết: 15 phút

  • Một chuỗi kết nối với triển khai MongoDB của bạn.

  • Bộ dữ liệu mẫu được tải vào cụm của bạn.

  • Một trình điều khiển MongoDB đã cài đặt.

Mẹo

Trong khối mã này có một nhận xét để thay thế URI kết nối bằng của riêng bạn. Thay thế chuỗi URI bằng chuỗi kết nối ATLAS của riêng bạn.

Chuyển sang cơ sở dữ liệu và bộ sưu tập bạn muốn truy vấn. Trong trường hợp này, bạn sẽ sử dụng cơ sở dữ liệu

{
"_id" : <value>,
"name" : { "first" : <string>, "last" : <string> }, // embedded document
"birth" : <ISODate>,
"death" : <ISODate>,
"contribs" : [ <string>, ... ], // Array of Strings
"awards" : [
{ "award" : <string>, year: <number>, by: <string> } // Array of embedded documents
...
]
}
0 và bộ sưu tập
{
"_id" : <value>,
"name" : { "first" : <string>, "last" : <string> }, // embedded document
"birth" : <ISODate>,
"death" : <ISODate>,
"contribs" : [ <string>, ... ], // Array of Strings
"awards" : [
{ "award" : <string>, year: <number>, by: <string> } // Array of embedded documents
...
]
}
1.

Bạn có thể truy xuất các tài liệu cụ thể từ một bộ sưu tập bằng cách áp dụng bộ lọc truy vấn. Bộ lọc truy vấn là một tài liệu chứa các tiêu chí bạn đang tìm kiếm. Ví dụ sau đây minh họa bằng cách sử dụng bộ lọc truy vấn để truy xuất các tài liệu từ bộ sưu tập

{
"_id" : <value>,
"name" : { "first" : <string>, "last" : <string> }, // embedded document
"birth" : <ISODate>,
"death" : <ISODate>,
"contribs" : [ <string>, ... ], // Array of Strings
"awards" : [
{ "award" : <string>, year: <number>, by: <string> } // Array of embedded documents
...
]
}
1 có trường
{
"_id" : <value>,
"name" : { "first" : <string>, "last" : <string> }, // embedded document
"birth" : <ISODate>,
"death" : <ISODate>,
"contribs" : [ <string>, ... ], // Array of Strings
"awards" : [
{ "award" : <string>, year: <number>, by: <string> } // Array of embedded documents
...
]
}
7 với giá trị
{
"_id" : <value>,
"name" : { "first" : <string>, "last" : <string> }, // embedded document
"birth" : <ISODate>,
"death" : <ISODate>,
"contribs" : [ <string>, ... ], // Array of Strings
"awards" : [
{ "award" : <string>, year: <number>, by: <string> } // Array of embedded documents
...
]
}
8.

Dưới đây là mã hoàn chỉnh theo sau là đầu ra mẫu.

Ghi chú

Giá trị

{
"_id" : <value>,
"name" : { "first" : <string>, "last" : <string> }, // embedded document
"birth" : <ISODate>,
"death" : <ISODate>,
"contribs" : [ <string>, ... ], // Array of Strings
"awards" : [
{ "award" : <string>, year: <number>, by: <string> } // Array of embedded documents
...
]
}
2 của bạn sẽ khác với các giá trị được hiển thị.

Bạn cũng có thể truy vấn bộ sưu tập bằng nhiều tiêu chí. Ví dụ sau đây minh họa bằng cách sử dụng nhiều tiêu chí để truy xuất các tài liệu từ bộ sưu tập

{
"_id" : <value>,
"name" : { "first" : <string>, "last" : <string> }, // embedded document
"birth" : <ISODate>,
"death" : <ISODate>,
"contribs" : [ <string>, ... ], // Array of Strings
"awards" : [
{ "award" : <string>, year: <number>, by: <string> } // Array of embedded documents
...
]
}
1 có trường
{
"_id" : <value>,
"name" : { "first" : <string>, "last" : <string> }, // embedded document
"birth" : <ISODate>,
"death" : <ISODate>,
"contribs" : [ <string>, ... ], // Array of Strings
"awards" : [
{ "award" : <string>, year: <number>, by: <string> } // Array of embedded documents
...
]
}
7 với giá trị

db.bios.find( { _id: 5 } )

2 và

db.bios.find( { _id: 5 } )

3 như một mục trong trường

db.bios.find( { _id: 5 } )

4.

Mặc dù trường

db.bios.find( { _id: 5 } )

4 là một mảng, bạn có thể sử dụng truy vấn bình đẳng nghiêm ngặt vì MongoDB coi các mảng là loại hạng nhất. Trong quá trình thực hiện truy vấn, MongoDB đã so sánh từng mục trong mảng với giá trị bạn đã chỉ định, trong trường hợp này là

db.bios.find( { _id: 5 } )

6, để xác định xem các tài liệu có khớp với tiêu chí của bạn không.

Nếu bạn đã hoàn thành hướng dẫn này, bạn đã lấy dữ liệu từ MongoDB bằng các tiêu chí bình đẳng cụ thể. Điều này rất hữu ích khi bạn biết chính xác những gì bạn đang tìm kiếm, ví dụ như số mục, tên người dùng hoặc phần tử hóa học.

Trong hướng dẫn tiếp theo, bạn sẽ tìm hiểu cách đọc dữ liệu từ MongoDB bằng cách sử dụng các nhà khai thác so sánh để truy xuất các tài liệu phù hợp với một bộ tiêu chí rộng hơn.

Xem các tài nguyên sau đây để biết thêm thông tin chuyên sâu về các khái niệm được trình bày ở đây:

  • Chỉ định điều kiện bình đẳng

  • Khớp với một mảng được nhúng hoặc lồng nhau

Tài liệu về nhà → Hướng dẫn sử dụng MongoDBMongoDB Manual

db.bios.find( { _id: 5 } )

7

Quan trọng

Phương pháp Mongosh

Trang này ghi lại một phương thức

db.bios.find( { _id: 5 } )

8. Đây không phải là tài liệu cho các lệnh cơ sở dữ liệu hoặc trình điều khiển dành riêng cho ngôn ngữ, chẳng hạn như Node.js. Để sử dụng lệnh cơ sở dữ liệu, hãy xem lệnh

db.bios.find( { _id: 5 } )

9.

db.bios.find( { _id: 5 } )

8
method. This is not the documentation for database commands or language-specific drivers, such as Node.js. To use the database command, see the

db.bios.find( { _id: 5 } )

9 command.

Đối với trình điều khiển API MongoDB, hãy tham khảo tài liệu trình điều khiển MongoDB dành riêng cho ngôn ngữ.MongoDB driver documentation.

Đối với tài liệu Shell Legacy

db.bios.find( { "name.last": "Hopper" } )

0, hãy tham khảo tài liệu để phát hành máy chủ MongoDB tương ứng:

  • Mongo Shell v4.4

  • Mongo Shell v4.2

Chọn các tài liệu trong một bộ sưu tập hoặc xem và trả về con trỏ cho các tài liệu đã chọn.

Tham số

Loại hình

Sự mô tả

truy vấn

tài liệu

Không bắt buộc. Chỉ định bộ lọc lựa chọn bằng toán tử truy vấn. Để trả về tất cả các tài liệu trong một bộ sưu tập, hãy bỏ qua tham số này hoặc chuyển một tài liệu trống (

db.bios.find( { "name.last": "Hopper" } )

1).

chiếu

tài liệu

Không bắt buộc. Chỉ định bộ lọc lựa chọn bằng toán tử truy vấn. Để trả về tất cả các tài liệu trong một bộ sưu tập, hãy bỏ qua tham số này hoặc chuyển một tài liệu trống (

db.bios.find( { "name.last": "Hopper" } )

1).Projection.

chiếu

tài liệu

Không bắt buộc. Chỉ định bộ lọc lựa chọn bằng toán tử truy vấn. Để trả về tất cả các tài liệu trong một bộ sưu tập, hãy bỏ qua tham số này hoặc chuyển một tài liệu trống (

db.bios.find( { "name.last": "Hopper" } )

1).FindOptions.

Returns:chiếu

db.bios.find( { "name.last": "Hopper" } )

3
method "returns documents," the method is actually returning a cursor to the documents.

Quan trọng

Phương pháp Mongosh

Trang này ghi lại một phương thức

db.bios.find( { _id: 5 } )

8. Đây không phải là tài liệu cho các lệnh cơ sở dữ liệu hoặc trình điều khiển dành riêng cho ngôn ngữ, chẳng hạn như Node.js. Để sử dụng lệnh cơ sở dữ liệu, hãy xem lệnh

db.bios.find( { _id: 5 } )

9.

{ <field1>: <value>, <field2>: <value> ... }

Đối với trình điều khiển API MongoDB, hãy tham khảo tài liệu trình điều khiển MongoDB dành riêng cho ngôn ngữ.

Sự mô tả

db.bios.find( { "name.last": "Hopper" } )

6

truy vấn

db.bios.find( { "name.last": "Hopper" } )

8

tài liệu

db.bios.find( { "name.last": "Hopper" } )

9

Không bắt buộc. Chỉ định bộ lọc lựa chọn bằng toán tử truy vấn. Để trả về tất cả các tài liệu trong một bộ sưu tập, hãy bỏ qua tham số này hoặc chuyển một tài liệu trống (

db.bios.find( { "name.last": "Hopper" } )

1).first element that match the query condition on the array field; e.g.
db.bios.find(
{ _id: { $in: [ 5, ObjectId("507c35dd8fada716c89d0013") ] } }
)
1. (Not available for views.) Non-zero integers are also treated as
{
"_id" : <value>,
"name" : { "first" : <string>, "last" : <string> }, // embedded document
"birth" : <ISODate>,
"death" : <ISODate>,
"contribs" : [ <string>, ... ], // Array of Strings
"awards" : [
{ "award" : <string>, year: <number>, by: <string> } // Array of embedded documents
...
]
}
8.

db.bios.find(
{ _id: { $in: [ 5, ObjectId("507c35dd8fada716c89d0013") ] } }
)
3

chiếu

db.bios.find(
{ _id: { $in: [ 5, ObjectId("507c35dd8fada716c89d0013") ] } }
)
6

Không bắt buộc. Chỉ định các trường để trả về trong các tài liệu phù hợp với bộ lọc truy vấn. Để trả về tất cả các trường trong các tài liệu phù hợp, hãy bỏ qua tham số này. Để biết chi tiết, xem phép chiếu.

db.bios.find(
{ _id: { $in: [ 5, ObjectId("507c35dd8fada716c89d0013") ] } }
)
9

tùy chọn

Không bắt buộc. Chỉ định các tùy chọn bổ sung cho truy vấn. Các tùy chọn này sửa đổi hành vi truy vấn và cách kết quả được trả về. Để xem các tùy chọn có sẵn, xem FindOptions.

  • Một con trỏ đối với các tài liệu phù hợp với tiêu chí

    db.bios.find( { "name.last": "Hopper" } )

    2. Khi phương thức

    db.bios.find( { "name.last": "Hopper" } )

    3 "trả về tài liệu", phương thức thực sự đang trả lại một con trỏ cho các tài liệu.

    • db.bios.find( { birth: { $gt: new Date('1950-01-01') } } )

      0

    • db.bios.find( { birth: { $gt: new Date('1950-01-01') } } )

      1

    • db.bios.find( { birth: { $gt: new Date('1950-01-01') } } )

      2

  • Tính nhất quán ngôn ngữ

    • db.bios.find( { birth: { $gt: new Date('1950-01-01') } } )

      4

    • db.bios.find( { birth: { $gt: new Date('1950-01-01') } } )

      5

    • db.bios.find( { birth: { $gt: new Date('1950-01-01') } } )

      6

Tham số

db.bios.find( { "name.last": "Hopper" } )

4 xác định các trường nào được trả về trong các tài liệu phù hợp. Tham số

db.bios.find( { "name.last": "Hopper" } )

4 lấy một tài liệu của biểu mẫu sau:

Chiếu

Chỉ định bao gồm một trường. Số nguyên khác không cũng được coi là

{
"_id" : <value>,
"name" : { "first" : <string>, "last" : <string> }, // embedded document
"birth" : <ISODate>,
"death" : <ISODate>,
"contribs" : [ <string>, ... ], // Array of Strings
"awards" : [
{ "award" : <string>, year: <number>, by: <string> } // Array of embedded documents
...
]
}
8.

  • Chỉ định loại trừ một trường.

  • Với việc sử dụng toán tử chiếu mảng

    db.bios.find(
    { _id: { $in: [ 5, ObjectId("507c35dd8fada716c89d0013") ] } }
    )
    0, bạn có thể chỉ định trình chiếu để trả về phần tử đầu tiên phù hợp với điều kiện truy vấn trên trường mảng; ví dụ.
    db.bios.find(
    { _id: { $in: [ 5, ObjectId("507c35dd8fada716c89d0013") ] } }
    )
    1. (Không có sẵn cho các lượt xem.) Số nguyên khác nhau cũng được coi là
    {
    "_id" : <value>,
    "name" : { "first" : <string>, "last" : <string> }, // embedded document
    "birth" : <ISODate>,
    "death" : <ISODate>,
    "contribs" : [ <string>, ... ], // Array of Strings
    "awards" : [
    { "award" : <string>, year: <number>, by: <string> } // Array of embedded documents
    ...
    ]
    }
    8.

Sử dụng các toán tử chiếu mảng

db.bios.find(
{ _id: { $in: [ 5, ObjectId("507c35dd8fada716c89d0013") ] } }
)
4,
db.bios.find(
{ _id: { $in: [ 5, ObjectId("507c35dd8fada716c89d0013") ] } }
)
5, chỉ định (các) phần tử mảng để bao gồm, do đó loại trừ các phần tử không đáp ứng các biểu thức. (Không có sẵn để xem.)

Sử dụng biểu thức toán tử

db.bios.find(
{ _id: { $in: [ 5, ObjectId("507c35dd8fada716c89d0013") ] } }
)
7, chỉ định bao gồm
db.bios.find(
{ _id: { $in: [ 5, ObjectId("507c35dd8fada716c89d0013") ] } }
)
8 có sẵn. (Không có sẵn để xem.)

  • Chỉ định giá trị của trường dự kiến.

  • Trong các dự báo loại trừ rõ ràng các trường, trường

    db.bios.find(
    { "name.last": { $regex: /^N/ } }
    )
    1 là trường duy nhất mà bạn có thể bao gồm rõ ràng; Tuy nhiên, trường
    db.bios.find(
    { "name.last": { $regex: /^N/ } }
    )
    1 được bao gồm theo mặc định.

Xem các ví dụ chiếu.Projection Examples.

Thực hiện

db.bios.find(
{ "name.last": { $regex: /^N/ } }
)
8 trong

db.bios.find( { _id: 5 } )

8 tự động lặp lại con trỏ để hiển thị lên đến 20 tài liệu đầu tiên. Loại
{ "_id": "apples", "qty": 5 }
{ "_id": "bananas", "qty": 7 }
{ "_id": "oranges", "qty": { "in stock": 8, "ordered": 12 } }
{ "_id": "avocados", "qty": "fourteen" }
00 để tiếp tục lặp lại.
db.bios.find(
{ "name.last": { $regex: /^N/ } }
)
8
in

db.bios.find( { _id: 5 } )

8
automatically iterates the cursor to display up to the first 20 documents. Type
{ "_id": "apples", "qty": 5 }
{ "_id": "bananas", "qty": 7 }
{ "_id": "oranges", "qty": { "in stock": 8, "ordered": 12 } }
{ "_id": "avocados", "qty": "fourteen" }
00 to continue iteration.

Để truy cập các tài liệu được trả về với trình điều khiển, hãy sử dụng cơ chế xử lý con trỏ thích hợp cho ngôn ngữ trình điều khiển.driver language.

Mẹo

Để chỉ định mối quan tâm đọc cho

db.bios.find(
{ "name.last": { $regex: /^N/ } }
)
8, hãy sử dụng phương pháp
{ "_id": "apples", "qty": 5 }
{ "_id": "bananas", "qty": 7 }
{ "_id": "oranges", "qty": { "in stock": 8, "ordered": 12 } }
{ "_id": "avocados", "qty": "fourteen" }
02.
db.bios.find(
{ "name.last": { $regex: /^N/ } }
)
8
, use the
{ "_id": "apples", "qty": 5 }
{ "_id": "bananas", "qty": 7 }
{ "_id": "oranges", "qty": { "in stock": 8, "ordered": 12 } }
{ "_id": "avocados", "qty": "fourteen" }
02 method.

MongoDB coi một số loại dữ liệu tương đương với mục đích so sánh. Ví dụ, các loại số trải qua chuyển đổi trước khi so sánh. Tuy nhiên, đối với hầu hết các loại dữ liệu, các toán tử so sánh chỉ thực hiện so sánh trên các tài liệu trong đó loại BSON của trường đích phù hợp với loại của toán hạng truy vấn. Xem xét bộ sưu tập sau:

{ "_id": "apples", "qty": 5 }
{ "_id": "bananas", "qty": 7 }
{ "_id": "oranges", "qty": { "in stock": 8, "ordered": 12 } }
{ "_id": "avocados", "qty": "fourteen" }

Truy vấn sau sử dụng

{ "_id": "apples", "qty": 5 }
{ "_id": "bananas", "qty": 7 }
{ "_id": "oranges", "qty": { "in stock": 8, "ordered": 12 } }
{ "_id": "avocados", "qty": "fourteen" }
03 để trả về các tài liệu trong đó giá trị của
{ "_id": "apples", "qty": 5 }
{ "_id": "bananas", "qty": 7 }
{ "_id": "oranges", "qty": { "in stock": 8, "ordered": 12 } }
{ "_id": "avocados", "qty": "fourteen" }
04 lớn hơn
{ "_id": "apples", "qty": 5 }
{ "_id": "bananas", "qty": 7 }
{ "_id": "oranges", "qty": { "in stock": 8, "ordered": 12 } }
{ "_id": "avocados", "qty": "fourteen" }
05.

db.collection.find( { qty: { $gt: 4 } } )

Truy vấn trả về các tài liệu sau:

{ "_id": "apples", "qty": 5 }
{ "_id": "bananas", "qty": 7 }

Tài liệu có

db.bios.find(
{ "name.last": { $regex: /^N/ } }
)
1 bằng
{ "_id": "apples", "qty": 5 }
{ "_id": "bananas", "qty": 7 }
{ "_id": "oranges", "qty": { "in stock": 8, "ordered": 12 } }
{ "_id": "avocados", "qty": "fourteen" }
07 không được trả về vì giá trị ____104 của nó thuộc loại
{ "_id": "apples", "qty": 5 }
{ "_id": "bananas", "qty": 7 }
{ "_id": "oranges", "qty": { "in stock": 8, "ordered": 12 } }
{ "_id": "avocados", "qty": "fourteen" }
09 trong khi toán hạng
{ "_id": "apples", "qty": 5 }
{ "_id": "bananas", "qty": 7 }
{ "_id": "oranges", "qty": { "in stock": 8, "ordered": 12 } }
{ "_id": "avocados", "qty": "fourteen" }
03 thuộc loại
{ "_id": "apples", "qty": 5 }
{ "_id": "bananas", "qty": 7 }
{ "_id": "oranges", "qty": { "in stock": 8, "ordered": 12 } }
{ "_id": "avocados", "qty": "fourteen" }
11.

Tài liệu có

db.bios.find(
{ "name.last": { $regex: /^N/ } }
)
1 bằng
{ "_id": "apples", "qty": 5 }
{ "_id": "bananas", "qty": 7 }
{ "_id": "oranges", "qty": { "in stock": 8, "ordered": 12 } }
{ "_id": "avocados", "qty": "fourteen" }
13 không được trả về vì giá trị ____104 của nó thuộc loại
{ "_id": "apples", "qty": 5 }
{ "_id": "bananas", "qty": 7 }
{ "_id": "oranges", "qty": { "in stock": 8, "ordered": 12 } }
{ "_id": "avocados", "qty": "fourteen" }
15.

Ghi chú

Mới trong phiên bản 4.0.

Đối với con trỏ được tạo trong một phiên, bạn không thể gọi

{ "_id": "apples", "qty": 5 }
{ "_id": "bananas", "qty": 7 }
{ "_id": "oranges", "qty": { "in stock": 8, "ordered": 12 } }
{ "_id": "avocados", "qty": "fourteen" }
16 bên ngoài phiên.

Tương tự, đối với con trỏ được tạo ra bên ngoài phiên, bạn không thể gọi

{ "_id": "apples", "qty": 5 }
{ "_id": "bananas", "qty": 7 }
{ "_id": "oranges", "qty": { "in stock": 8, "ordered": 12 } }
{ "_id": "avocados", "qty": "fourteen" }
16 trong phiên.

Bắt đầu từ MongoDB 3.6, Trình điều khiển MongoDB và

db.bios.find( { _id: 5 } )

8 liên kết tất cả các hoạt động với một phiên máy chủ, ngoại trừ các hoạt động ghi không được biết đến. Đối với các hoạt động không được liên kết rõ ràng với phiên (nghĩa là sử dụng
{ "_id": "apples", "qty": 5 }
{ "_id": "bananas", "qty": 7 }
{ "_id": "oranges", "qty": { "in stock": 8, "ordered": 12 } }
{ "_id": "avocados", "qty": "fourteen" }
19), trình điều khiển MongoDB và

db.bios.find( { _id: 5 } )

8 tạo ra một phiên ngầm và liên kết nó với hoạt động.

db.bios.find( { _id: 5 } )

8
associate all operations with a server session, with the exception of unacknowledged write operations. For operations not explicitly associated with a session (i.e. using
{ "_id": "apples", "qty": 5 }
{ "_id": "bananas", "qty": 7 }
{ "_id": "oranges", "qty": { "in stock": 8, "ordered": 12 } }
{ "_id": "avocados", "qty": "fourteen" }
19), MongoDB drivers and

db.bios.find( { _id: 5 } )

8 create an implicit session and associate it with the operation.

Nếu một phiên nhàn rỗi trong hơn 30 phút, máy chủ MongoDB sẽ đánh dấu phiên đó là hết hạn và có thể đóng nó bất cứ lúc nào. Khi máy chủ MongoDB đóng phiên, nó cũng giết chết mọi hoạt động đang thực hiện và các con trỏ mở liên quan đến phiên. Điều này bao gồm các con trỏ được cấu hình với

{ "_id": "apples", "qty": 5 }
{ "_id": "bananas", "qty": 7 }
{ "_id": "oranges", "qty": { "in stock": 8, "ordered": 12 } }
{ "_id": "avocados", "qty": "fourteen" }
21 hoặc
{ "_id": "apples", "qty": 5 }
{ "_id": "bananas", "qty": 7 }
{ "_id": "oranges", "qty": { "in stock": 8, "ordered": 12 } }
{ "_id": "avocados", "qty": "fourteen" }
22 lớn hơn 30 phút.

Đối với các hoạt động có thể nhàn rỗi trong hơn 30 phút, liên kết hoạt động với một phiên rõ ràng bằng cách sử dụng

{ "_id": "apples", "qty": 5 }
{ "_id": "bananas", "qty": 7 }
{ "_id": "oranges", "qty": { "in stock": 8, "ordered": 12 } }
{ "_id": "avocados", "qty": "fourteen" }
19 và định kỳ làm mới phiên bằng lệnh
{ "_id": "apples", "qty": 5 }
{ "_id": "bananas", "qty": 7 }
{ "_id": "oranges", "qty": { "in stock": 8, "ordered": 12 } }
{ "_id": "avocados", "qty": "fourteen" }
24. Xem thời gian chờ phiên nhàn rỗi để biết thêm thông tin.

db.bios.find(
{ "name.last": { $regex: /^N/ } }
)
8 có thể được sử dụng bên trong các giao dịch đa tài liệu. can be used inside multi-document transactions.

  • Đối với con trỏ được tạo ra ngoài giao dịch, bạn không thể gọi

    { "_id": "apples", "qty": 5 }
    { "_id": "bananas", "qty": 7 }
    { "_id": "oranges", "qty": { "in stock": 8, "ordered": 12 } }
    { "_id": "avocados", "qty": "fourteen" }
    16 bên trong giao dịch.

  • Đối với con trỏ được tạo trong một giao dịch, bạn không thể gọi

    { "_id": "apples", "qty": 5 }
    { "_id": "bananas", "qty": 7 }
    { "_id": "oranges", "qty": { "in stock": 8, "ordered": 12 } }
    { "_id": "avocados", "qty": "fourteen" }
    16 ngoài giao dịch.

Quan trọng

Trong hầu hết các trường hợp, giao dịch đa tài liệu phát sinh chi phí hiệu suất lớn hơn so với ghi tài liệu đơn lẻ và sự sẵn có của các giao dịch đa tài liệu không nên là một sự thay thế cho thiết kế lược đồ hiệu quả. Đối với nhiều kịch bản, mô hình dữ liệu được chuẩn hóa (tài liệu và mảng nhúng) sẽ tiếp tục tối ưu cho các trường hợp dữ liệu và sử dụng của bạn. Đó là, đối với nhiều kịch bản, mô hình hóa dữ liệu của bạn một cách thích hợp sẽ giảm thiểu nhu cầu cho các giao dịch đa tài liệu.

Để biết các cân nhắc sử dụng giao dịch bổ sung (như giới hạn thời gian chạy và giới hạn kích thước oplog), xem thêm các cân nhắc sản xuất.

Bắt đầu từ MongoDB 4.2, nếu khách hàng phát hành

db.bios.find(
{ "name.last": { $regex: /^N/ } }
)
8 ngắt kết nối trước khi hoạt động hoàn thành, MongoDB đánh dấu
db.bios.find(
{ "name.last": { $regex: /^N/ } }
)
8 để chấm dứt bằng cách sử dụng
{ "_id": "apples", "qty": 5 }
{ "_id": "bananas", "qty": 7 }
{ "_id": "oranges", "qty": { "in stock": 8, "ordered": 12 } }
{ "_id": "avocados", "qty": "fourteen" }
30
db.bios.find(
{ "name.last": { $regex: /^N/ } }
)
8
disconnects before the operation completes, MongoDB marks
db.bios.find(
{ "name.last": { $regex: /^N/ } }
)
8
for termination using
{ "_id": "apples", "qty": 5 }
{ "_id": "bananas", "qty": 7 }
{ "_id": "oranges", "qty": { "in stock": 8, "ordered": 12 } }
{ "_id": "avocados", "qty": "fourteen" }
30

Các ví dụ trong phần này sử dụng các tài liệu từ Bộ sưu tập BIOS trong đó các tài liệu thường có biểu mẫu:

{
"_id" : <value>,
"name" : { "first" : <string>, "last" : <string> }, // embedded document
"birth" : <ISODate>,
"death" : <ISODate>,
"contribs" : [ <string>, ... ], // Array of Strings
"awards" : [
{ "award" : <string>, year: <number>, by: <string> } // Array of embedded documents
...
]
}

Để tạo và điền vào bộ sưu tập

{ "_id": "apples", "qty": 5 }
{ "_id": "bananas", "qty": 7 }
{ "_id": "oranges", "qty": { "in stock": 8, "ordered": 12 } }
{ "_id": "avocados", "qty": "fourteen" }
31, hãy xem Bộ sưu tập ví dụ
{ "_id": "apples", "qty": 5 }
{ "_id": "bananas", "qty": 7 }
{ "_id": "oranges", "qty": { "in stock": 8, "ordered": 12 } }
{ "_id": "avocados", "qty": "fourteen" }
31.

Phương thức

db.bios.find( { "name.last": "Hopper" } )

3 không có tham số trả về tất cả các tài liệu từ bộ sưu tập và trả về tất cả các trường cho các tài liệu. Ví dụ: thao tác sau đây trả về tất cả các tài liệu trong bộ sưu tập BIOS:

db.bios.find( { "name.last": "Hopper" } )

3
method with no parameters returns all documents from a collection and returns all fields for the documents. For example, the following operation returns all documents in the bios collection:

  • Hoạt động sau trả về các tài liệu trong bộ sưu tập BIOS trong đó

    db.bios.find(
    { "name.last": { $regex: /^N/ } }
    )
    1 bằng
    { "_id": "apples", "qty": 5 }
    { "_id": "bananas", "qty": 7 }
    { "_id": "oranges", "qty": { "in stock": 8, "ordered": 12 } }
    { "_id": "avocados", "qty": "fourteen" }
    35:

    db.bios.find( { _id: 5 } )

  • Hoạt động sau đây trả về các tài liệu trong bộ sưu tập BIOS trong đó trường

    { "_id": "apples", "qty": 5 }
    { "_id": "bananas", "qty": 7 }
    { "_id": "oranges", "qty": { "in stock": 8, "ordered": 12 } }
    { "_id": "avocados", "qty": "fourteen" }
    36 trong tài liệu nhúng
    { "_id": "apples", "qty": 5 }
    { "_id": "bananas", "qty": 7 }
    { "_id": "oranges", "qty": { "in stock": 8, "ordered": 12 } }
    { "_id": "avocados", "qty": "fourteen" }
    37 bằng
    { "_id": "apples", "qty": 5 }
    { "_id": "bananas", "qty": 7 }
    { "_id": "oranges", "qty": { "in stock": 8, "ordered": 12 } }
    { "_id": "avocados", "qty": "fourteen" }
    38:

    db.bios.find( { "name.last": "Hopper" } )

    Ghi chú

    Mới trong phiên bản 4.0.

Đối với con trỏ được tạo trong một phiên, bạn không thể gọi

{ "_id": "apples", "qty": 5 }
{ "_id": "bananas", "qty": 7 }
{ "_id": "oranges", "qty": { "in stock": 8, "ordered": 12 } }
{ "_id": "avocados", "qty": "fourteen" }
16 bên ngoài phiên.

db.bios.find( { "name.last": "Hopper" } )

3
with the
{ "_id": "apples", "qty": 5 }
{ "_id": "bananas", "qty": 7 }
{ "_id": "oranges", "qty": { "in stock": 8, "ordered": 12 } }
{ "_id": "avocados", "qty": "fourteen" }
41 parameter.

Tương tự, đối với con trỏ được tạo ra bên ngoài phiên, bạn không thể gọi

{ "_id": "apples", "qty": 5 }
{ "_id": "bananas", "qty": 7 }
{ "_id": "oranges", "qty": { "in stock": 8, "ordered": 12 } }
{ "_id": "avocados", "qty": "fourteen" }
16 trong phiên.

  • Bắt đầu từ MongoDB 3.6, Trình điều khiển MongoDB và

    db.bios.find( { _id: 5 } )

    8 liên kết tất cả các hoạt động với một phiên máy chủ, ngoại trừ các hoạt động ghi không được biết đến. Đối với các hoạt động không được liên kết rõ ràng với phiên (nghĩa là sử dụng
    { "_id": "apples", "qty": 5 }
    { "_id": "bananas", "qty": 7 }
    { "_id": "oranges", "qty": { "in stock": 8, "ordered": 12 } }
    { "_id": "avocados", "qty": "fourteen" }
    19), trình điều khiển MongoDB và

    db.bios.find( { _id: 5 } )

    8 tạo ra một phiên ngầm và liên kết nó với hoạt động.

    db.bios.find(
    { _id: { $in: [ 5, ObjectId("507c35dd8fada716c89d0013") ] } }
    )

  • Hoạt động sau sử dụng toán tử

    { "_id": "apples", "qty": 5 }
    { "_id": "bananas", "qty": 7 }
    { "_id": "oranges", "qty": { "in stock": 8, "ordered": 12 } }
    { "_id": "avocados", "qty": "fourteen" }
    03 trả về tất cả các tài liệu từ bộ sưu tập
    { "_id": "apples", "qty": 5 }
    { "_id": "bananas", "qty": 7 }
    { "_id": "oranges", "qty": { "in stock": 8, "ordered": 12 } }
    { "_id": "avocados", "qty": "fourteen" }
    31 trong đó
    { "_id": "apples", "qty": 5 }
    { "_id": "bananas", "qty": 7 }
    { "_id": "oranges", "qty": { "in stock": 8, "ordered": 12 } }
    { "_id": "avocados", "qty": "fourteen" }
    48 lớn hơn
    { "_id": "apples", "qty": 5 }
    { "_id": "bananas", "qty": 7 }
    { "_id": "oranges", "qty": { "in stock": 8, "ordered": 12 } }
    { "_id": "avocados", "qty": "fourteen" }
    49:

    db.bios.find( { birth: { $gt: new Date('1950-01-01') } } )

  • Hoạt động sau sử dụng toán tử

    { "_id": "apples", "qty": 5 }
    { "_id": "bananas", "qty": 7 }
    { "_id": "oranges", "qty": { "in stock": 8, "ordered": 12 } }
    { "_id": "avocados", "qty": "fourteen" }
    50 để trả về tài liệu trong bộ sưu tập BIOS trong đó trường
    { "_id": "apples", "qty": 5 }
    { "_id": "bananas", "qty": 7 }
    { "_id": "oranges", "qty": { "in stock": 8, "ordered": 12 } }
    { "_id": "avocados", "qty": "fourteen" }
    51 bắt đầu bằng chữ cái
    { "_id": "apples", "qty": 5 }
    { "_id": "bananas", "qty": 7 }
    { "_id": "oranges", "qty": { "in stock": 8, "ordered": 12 } }
    { "_id": "avocados", "qty": "fourteen" }
    52 (hoặc là
    { "_id": "apples", "qty": 5 }
    { "_id": "bananas", "qty": 7 }
    { "_id": "oranges", "qty": { "in stock": 8, "ordered": 12 } }
    { "_id": "avocados", "qty": "fourteen" }
    53)

    db.bios.find(
    { "name.last": { $regex: /^N/ } }
    )

Để biết danh sách các toán tử truy vấn, xem Trình chọn truy vấn.

Kết hợp các toán tử so sánh để chỉ định phạm vi cho một trường. Hoạt động sau đây trả về từ các tài liệu bộ sưu tập BIOS trong đó

{ "_id": "apples", "qty": 5 }
{ "_id": "bananas", "qty": 7 }
{ "_id": "oranges", "qty": { "in stock": 8, "ordered": 12 } }
{ "_id": "avocados", "qty": "fourteen" }
48 nằm trong khoảng từ
{ "_id": "apples", "qty": 5 }
{ "_id": "bananas", "qty": 7 }
{ "_id": "oranges", "qty": { "in stock": 8, "ordered": 12 } }
{ "_id": "avocados", "qty": "fourteen" }
55 và
{ "_id": "apples", "qty": 5 }
{ "_id": "bananas", "qty": 7 }
{ "_id": "oranges", "qty": { "in stock": 8, "ordered": 12 } }
{ "_id": "avocados", "qty": "fourteen" }
56 (độc quyền):

{ "_id": "apples", "qty": 5 }
{ "_id": "bananas", "qty": 7 }
{ "_id": "oranges", "qty": { "in stock": 8, "ordered": 12 } }
{ "_id": "avocados", "qty": "fourteen" }
0

Để biết danh sách các toán tử truy vấn, xem Trình chọn truy vấn.

Kết hợp các toán tử so sánh để chỉ định phạm vi cho một trường. Hoạt động sau đây trả về từ các tài liệu bộ sưu tập BIOS trong đó

{ "_id": "apples", "qty": 5 }
{ "_id": "bananas", "qty": 7 }
{ "_id": "oranges", "qty": { "in stock": 8, "ordered": 12 } }
{ "_id": "avocados", "qty": "fourteen" }
48 nằm trong khoảng từ
{ "_id": "apples", "qty": 5 }
{ "_id": "bananas", "qty": 7 }
{ "_id": "oranges", "qty": { "in stock": 8, "ordered": 12 } }
{ "_id": "avocados", "qty": "fourteen" }
55 và
{ "_id": "apples", "qty": 5 }
{ "_id": "bananas", "qty": 7 }
{ "_id": "oranges", "qty": { "in stock": 8, "ordered": 12 } }
{ "_id": "avocados", "qty": "fourteen" }
56 (độc quyền):

{ "_id": "apples", "qty": 5 }
{ "_id": "bananas", "qty": 7 }
{ "_id": "oranges", "qty": { "in stock": 8, "ordered": 12 } }
{ "_id": "avocados", "qty": "fourteen" }
1

Để biết danh sách các toán tử truy vấn, xem Trình chọn truy vấn.

Kết hợp các toán tử so sánh để chỉ định phạm vi cho một trường. Hoạt động sau đây trả về từ các tài liệu bộ sưu tập BIOS trong đó

{ "_id": "apples", "qty": 5 }
{ "_id": "bananas", "qty": 7 }
{ "_id": "oranges", "qty": { "in stock": 8, "ordered": 12 } }
{ "_id": "avocados", "qty": "fourteen" }
48 nằm trong khoảng từ
{ "_id": "apples", "qty": 5 }
{ "_id": "bananas", "qty": 7 }
{ "_id": "oranges", "qty": { "in stock": 8, "ordered": 12 } }
{ "_id": "avocados", "qty": "fourteen" }
55 và
{ "_id": "apples", "qty": 5 }
{ "_id": "bananas", "qty": 7 }
{ "_id": "oranges", "qty": { "in stock": 8, "ordered": 12 } }
{ "_id": "avocados", "qty": "fourteen" }
56 (độc quyền):

Hoạt động sau trả về tất cả các tài liệu từ Bộ sưu tập BIOS trong đó trường

{ "_id": "apples", "qty": 5 }
{ "_id": "bananas", "qty": 7 }
{ "_id": "oranges", "qty": { "in stock": 8, "ordered": 12 } }
{ "_id": "avocados", "qty": "fourteen" }
48 là
{ "_id": "apples", "qty": 5 }
{ "_id": "bananas", "qty": 7 }
{ "_id": "oranges", "qty": { "in stock": 8, "ordered": 12 } }
{ "_id": "avocados", "qty": "fourteen" }
58
{ "_id": "apples", "qty": 5 }
{ "_id": "bananas", "qty": 7 }
{ "_id": "oranges", "qty": { "in stock": 8, "ordered": 12 } }
{ "_id": "avocados", "qty": "fourteen" }
49 và trường
{ "_id": "apples", "qty": 5 }
{ "_id": "bananas", "qty": 7 }
{ "_id": "oranges", "qty": { "in stock": 8, "ordered": 12 } }
{ "_id": "avocados", "qty": "fourteen" }
60 không tồn tại:

{ "_id": "apples", "qty": 5 }
{ "_id": "bananas", "qty": 7 }
{ "_id": "oranges", "qty": { "in stock": 8, "ordered": 12 } }
{ "_id": "avocados", "qty": "fourteen" }
2

Các ví dụ sau đây truy vấn trường nhúng

{ "_id": "apples", "qty": 5 }
{ "_id": "bananas", "qty": 7 }
{ "_id": "oranges", "qty": { "in stock": 8, "ordered": 12 } }
{ "_id": "avocados", "qty": "fourteen" }
37 trong bộ sưu tập BIOS.not match documents with the following
{ "_id": "apples", "qty": 5 }
{ "_id": "bananas", "qty": 7 }
{ "_id": "oranges", "qty": { "in stock": 8, "ordered": 12 } }
{ "_id": "avocados", "qty": "fourteen" }
37 fields:

{ "_id": "apples", "qty": 5 }
{ "_id": "bananas", "qty": 7 }
{ "_id": "oranges", "qty": { "in stock": 8, "ordered": 12 } }
{ "_id": "avocados", "qty": "fourteen" }
3

Hoạt động sau đây trả về các tài liệu trong bộ sưu tập BIOS trong đó tài liệu nhúng

{ "_id": "apples", "qty": 5 }
{ "_id": "bananas", "qty": 7 }
{ "_id": "oranges", "qty": { "in stock": 8, "ordered": 12 } }
{ "_id": "avocados", "qty": "fourteen" }
37 chính xác là
{ "_id": "apples", "qty": 5 }
{ "_id": "bananas", "qty": 7 }
{ "_id": "oranges", "qty": { "in stock": 8, "ordered": 12 } }
{ "_id": "avocados", "qty": "fourteen" }
63, bao gồm cả thứ tự:

{ "_id": "apples", "qty": 5 }
{ "_id": "bananas", "qty": 7 }
{ "_id": "oranges", "qty": { "in stock": 8, "ordered": 12 } }
{ "_id": "avocados", "qty": "fourteen" }
4

Trường

{ "_id": "apples", "qty": 5 }
{ "_id": "bananas", "qty": 7 }
{ "_id": "oranges", "qty": { "in stock": 8, "ordered": 12 } }
{ "_id": "avocados", "qty": "fourteen" }
37 phải khớp chính xác với tài liệu nhúng. Truy vấn không khớp với các tài liệu với các trường
{ "_id": "apples", "qty": 5 }
{ "_id": "bananas", "qty": 7 }
{ "_id": "oranges", "qty": { "in stock": 8, "ordered": 12 } }
{ "_id": "avocados", "qty": "fourteen" }
37 sau:

{ "_id": "apples", "qty": 5 }
{ "_id": "bananas", "qty": 7 }
{ "_id": "oranges", "qty": { "in stock": 8, "ordered": 12 } }
{ "_id": "avocados", "qty": "fourteen" }
5

Hoạt động sau đây trả về các tài liệu trong bộ sưu tập BIOS trong đó tài liệu nhúng

{ "_id": "apples", "qty": 5 }
{ "_id": "bananas", "qty": 7 }
{ "_id": "oranges", "qty": { "in stock": 8, "ordered": 12 } }
{ "_id": "avocados", "qty": "fourteen" }
37 chứa một trường
{ "_id": "apples", "qty": 5 }
{ "_id": "bananas", "qty": 7 }
{ "_id": "oranges", "qty": { "in stock": 8, "ordered": 12 } }
{ "_id": "avocados", "qty": "fourteen" }
67 với giá trị
{ "_id": "apples", "qty": 5 }
{ "_id": "bananas", "qty": 7 }
{ "_id": "oranges", "qty": { "in stock": 8, "ordered": 12 } }
{ "_id": "avocados", "qty": "fourteen" }
68 và trường
{ "_id": "apples", "qty": 5 }
{ "_id": "bananas", "qty": 7 }
{ "_id": "oranges", "qty": { "in stock": 8, "ordered": 12 } }
{ "_id": "avocados", "qty": "fourteen" }
36 với giá trị
{ "_id": "apples", "qty": 5 }
{ "_id": "bananas", "qty": 7 }
{ "_id": "oranges", "qty": { "in stock": 8, "ordered": 12 } }
{ "_id": "avocados", "qty": "fourteen" }
70. Truy vấn sử dụng ký hiệu DOT để truy cập các trường trong tài liệu nhúng:

Truy vấn khớp với tài liệu trong đó trường

{ "_id": "apples", "qty": 5 }
{ "_id": "bananas", "qty": 7 }
{ "_id": "oranges", "qty": { "in stock": 8, "ordered": 12 } }
{ "_id": "avocados", "qty": "fourteen" }
37 chứa một tài liệu nhúng với trường
{ "_id": "apples", "qty": 5 }
{ "_id": "bananas", "qty": 7 }
{ "_id": "oranges", "qty": { "in stock": 8, "ordered": 12 } }
{ "_id": "avocados", "qty": "fourteen" }
67 với giá trị
{ "_id": "apples", "qty": 5 }
{ "_id": "bananas", "qty": 7 }
{ "_id": "oranges", "qty": { "in stock": 8, "ordered": 12 } }
{ "_id": "avocados", "qty": "fourteen" }
68 và trường
{ "_id": "apples", "qty": 5 }
{ "_id": "bananas", "qty": 7 }
{ "_id": "oranges", "qty": { "in stock": 8, "ordered": 12 } }
{ "_id": "avocados", "qty": "fourteen" }
36 với giá trị
{ "_id": "apples", "qty": 5 }
{ "_id": "bananas", "qty": 7 }
{ "_id": "oranges", "qty": { "in stock": 8, "ordered": 12 } }
{ "_id": "avocados", "qty": "fourteen" }
70. Chẳng hạn, truy vấn sẽ khớp với các tài liệu với các trường
{ "_id": "apples", "qty": 5 }
{ "_id": "bananas", "qty": 7 }
{ "_id": "oranges", "qty": { "in stock": 8, "ordered": 12 } }
{ "_id": "avocados", "qty": "fourteen" }
37 được giữ trong một trong các giá trị sau:

  • Để biết thêm thông tin và ví dụ, xem thêm Truy vấn trên các tài liệu nhúng/lồng nhau.

    { "_id": "apples", "qty": 5 }
    { "_id": "bananas", "qty": 7 }
    { "_id": "oranges", "qty": { "in stock": 8, "ordered": 12 } }
    { "_id": "avocados", "qty": "fourteen" }
    6

  • Các ví dụ sau đây truy vấn mảng

    { "_id": "apples", "qty": 5 }
    { "_id": "bananas", "qty": 7 }
    { "_id": "oranges", "qty": { "in stock": 8, "ordered": 12 } }
    { "_id": "avocados", "qty": "fourteen" }
    77 trong bộ sưu tập BIOS.

    { "_id": "apples", "qty": 5 }
    { "_id": "bananas", "qty": 7 }
    { "_id": "oranges", "qty": { "in stock": 8, "ordered": 12 } }
    { "_id": "avocados", "qty": "fourteen" }
    7

  • Hoạt động sau trả về các tài liệu trong bộ sưu tập BIOS trong đó trường mảng

    { "_id": "apples", "qty": 5 }
    { "_id": "bananas", "qty": 7 }
    { "_id": "oranges", "qty": { "in stock": 8, "ordered": 12 } }
    { "_id": "avocados", "qty": "fourteen" }
    77 chứa phần tử
    { "_id": "apples", "qty": 5 }
    { "_id": "bananas", "qty": 7 }
    { "_id": "oranges", "qty": { "in stock": 8, "ordered": 12 } }
    { "_id": "avocados", "qty": "fourteen" }
    79:

    { "_id": "apples", "qty": 5 }
    { "_id": "bananas", "qty": 7 }
    { "_id": "oranges", "qty": { "in stock": 8, "ordered": 12 } }
    { "_id": "avocados", "qty": "fourteen" }
    8

    Hoạt động sau trả về các tài liệu trong bộ sưu tập BIOS trong đó trường mảng

    { "_id": "apples", "qty": 5 }
    { "_id": "bananas", "qty": 7 }
    { "_id": "oranges", "qty": { "in stock": 8, "ordered": 12 } }
    { "_id": "avocados", "qty": "fourteen" }
    77 chứa phần tử
    { "_id": "apples", "qty": 5 }
    { "_id": "bananas", "qty": 7 }
    { "_id": "oranges", "qty": { "in stock": 8, "ordered": 12 } }
    { "_id": "avocados", "qty": "fourteen" }
    81 hoặc
    { "_id": "apples", "qty": 5 }
    { "_id": "bananas", "qty": 7 }
    { "_id": "oranges", "qty": { "in stock": 8, "ordered": 12 } }
    { "_id": "avocados", "qty": "fourteen" }
    82:

  • Hoạt động sau sử dụng toán tử truy vấn

    { "_id": "apples", "qty": 5 }
    { "_id": "bananas", "qty": 7 }
    { "_id": "oranges", "qty": { "in stock": 8, "ordered": 12 } }
    { "_id": "avocados", "qty": "fourteen" }
    83 để trả về các tài liệu trong bộ sưu tập BIOS trong đó trường mảng
    { "_id": "apples", "qty": 5 }
    { "_id": "bananas", "qty": 7 }
    { "_id": "oranges", "qty": { "in stock": 8, "ordered": 12 } }
    { "_id": "avocados", "qty": "fourteen" }
    77 chứa cả hai phần tử
    { "_id": "apples", "qty": 5 }
    { "_id": "bananas", "qty": 7 }
    { "_id": "oranges", "qty": { "in stock": 8, "ordered": 12 } }
    { "_id": "avocados", "qty": "fourteen" }
    81 và
    { "_id": "apples", "qty": 5 }
    { "_id": "bananas", "qty": 7 }
    { "_id": "oranges", "qty": { "in stock": 8, "ordered": 12 } }
    { "_id": "avocados", "qty": "fourteen" }
    82:

    { "_id": "apples", "qty": 5 }
    { "_id": "bananas", "qty": 7 }
    { "_id": "oranges", "qty": { "in stock": 8, "ordered": 12 } }
    { "_id": "avocados", "qty": "fourteen" }
    9

Để biết thêm ví dụ, xem

{ "_id": "apples", "qty": 5 }
{ "_id": "bananas", "qty": 7 }
{ "_id": "oranges", "qty": { "in stock": 8, "ordered": 12 } }
{ "_id": "avocados", "qty": "fourteen" }
83. Xem thêm
db.bios.find(
{ _id: { $in: [ 5, ObjectId("507c35dd8fada716c89d0013") ] } }
)
4

  • Hoạt động sau sử dụng toán tử

    { "_id": "apples", "qty": 5 }
    { "_id": "bananas", "qty": 7 }
    { "_id": "oranges", "qty": { "in stock": 8, "ordered": 12 } }
    { "_id": "avocados", "qty": "fourteen" }
    89 để trả về các tài liệu trong bộ sưu tập BIOS trong đó kích thước mảng là
    { "_id": "apples", "qty": 5 }
    { "_id": "bananas", "qty": 7 }
    { "_id": "oranges", "qty": { "in stock": 8, "ordered": 12 } }
    { "_id": "avocados", "qty": "fourteen" }
    77 là 4:

  • Để biết thêm thông tin và ví dụ về truy vấn một mảng, xem:

Truy vấn một mảng

Truy vấn một loạt các tài liệu nhúng

  • Để biết danh sách các toán tử truy vấn cụ thể mảng, xem Array.

    db.collection.find( { qty: { $gt: 4 } } )

    0

  • Các ví dụ sau đây truy vấn mảng

    { "_id": "apples", "qty": 5 }
    { "_id": "bananas", "qty": 7 }
    { "_id": "oranges", "qty": { "in stock": 8, "ordered": 12 } }
    { "_id": "avocados", "qty": "fourteen" }
    91 trong bộ sưu tập BIOS.

    db.collection.find( { qty: { $gt: 4 } } )

    1

    Hoạt động sau trả về các tài liệu trong bộ sưu tập BIOS trong đó mảng

    { "_id": "apples", "qty": 5 }
    { "_id": "bananas", "qty": 7 }
    { "_id": "oranges", "qty": { "in stock": 8, "ordered": 12 } }
    { "_id": "avocados", "qty": "fourteen" }
    91 chứa một phần tử với trường
    { "_id": "apples", "qty": 5 }
    { "_id": "bananas", "qty": 7 }
    { "_id": "oranges", "qty": { "in stock": 8, "ordered": 12 } }
    { "_id": "avocados", "qty": "fourteen" }
    93 bằng
    { "_id": "apples", "qty": 5 }
    { "_id": "bananas", "qty": 7 }
    { "_id": "oranges", "qty": { "in stock": 8, "ordered": 12 } }
    { "_id": "avocados", "qty": "fourteen" }
    94:

Để biết thêm ví dụ, xem

{ "_id": "apples", "qty": 5 }
{ "_id": "bananas", "qty": 7 }
{ "_id": "oranges", "qty": { "in stock": 8, "ordered": 12 } }
{ "_id": "avocados", "qty": "fourteen" }
83. Xem thêm
db.bios.find(
{ _id: { $in: [ 5, ObjectId("507c35dd8fada716c89d0013") ] } }
)
4

  • Hoạt động sau sử dụng toán tử

    { "_id": "apples", "qty": 5 }
    { "_id": "bananas", "qty": 7 }
    { "_id": "oranges", "qty": { "in stock": 8, "ordered": 12 } }
    { "_id": "avocados", "qty": "fourteen" }
    89 để trả về các tài liệu trong bộ sưu tập BIOS trong đó kích thước mảng là
    { "_id": "apples", "qty": 5 }
    { "_id": "bananas", "qty": 7 }
    { "_id": "oranges", "qty": { "in stock": 8, "ordered": 12 } }
    { "_id": "avocados", "qty": "fourteen" }
    77 là 4:

  • Để biết thêm thông tin và ví dụ về truy vấn một mảng, xem:

Truy vấn một mảng

Truy vấn một loạt các tài liệu nhúngprojection parameter specifies which fields to return. The parameter contains either include or exclude specifications, not both, unless the exclude is for the

db.bios.find(
{ "name.last": { $regex: /^N/ } }
)
1 field.

Để biết danh sách các toán tử truy vấn cụ thể mảng, xem Array.

Các ví dụ sau đây truy vấn mảng

{ "_id": "apples", "qty": 5 }
{ "_id": "bananas", "qty": 7 }
{ "_id": "oranges", "qty": { "in stock": 8, "ordered": 12 } }
{ "_id": "avocados", "qty": "fourteen" }
91 trong bộ sưu tập BIOS.

Hoạt động sau trả về các tài liệu trong bộ sưu tập BIOS trong đó mảng

{ "_id": "apples", "qty": 5 }
{ "_id": "bananas", "qty": 7 }
{ "_id": "oranges", "qty": { "in stock": 8, "ordered": 12 } }
{ "_id": "avocados", "qty": "fourteen" }
91 chứa một phần tử với trường
{ "_id": "apples", "qty": 5 }
{ "_id": "bananas", "qty": 7 }
{ "_id": "oranges", "qty": { "in stock": 8, "ordered": 12 } }
{ "_id": "avocados", "qty": "fourteen" }
93 bằng
{ "_id": "apples", "qty": 5 }
{ "_id": "bananas", "qty": 7 }
{ "_id": "oranges", "qty": { "in stock": 8, "ordered": 12 } }
{ "_id": "avocados", "qty": "fourteen" }
94:

db.collection.find( { qty: { $gt: 4 } } )

2

Để biết danh sách các toán tử truy vấn cụ thể mảng, xem Array.

Các ví dụ sau đây truy vấn mảng

{ "_id": "apples", "qty": 5 }
{ "_id": "bananas", "qty": 7 }
{ "_id": "oranges", "qty": { "in stock": 8, "ordered": 12 } }
{ "_id": "avocados", "qty": "fourteen" }
91 trong bộ sưu tập BIOS.

Hoạt động sau trả về các tài liệu trong bộ sưu tập BIOS trong đó mảng

{ "_id": "apples", "qty": 5 }
{ "_id": "bananas", "qty": 7 }
{ "_id": "oranges", "qty": { "in stock": 8, "ordered": 12 } }
{ "_id": "avocados", "qty": "fourteen" }
91 chứa một phần tử với trường
{ "_id": "apples", "qty": 5 }
{ "_id": "bananas", "qty": 7 }
{ "_id": "oranges", "qty": { "in stock": 8, "ordered": 12 } }
{ "_id": "avocados", "qty": "fourteen" }
93 bằng
{ "_id": "apples", "qty": 5 }
{ "_id": "bananas", "qty": 7 }
{ "_id": "oranges", "qty": { "in stock": 8, "ordered": 12 } }
{ "_id": "avocados", "qty": "fourteen" }
94:

db.collection.find( { qty: { $gt: 4 } } )

3

Để biết danh sách các toán tử truy vấn cụ thể mảng, xem Array.

Các ví dụ sau đây truy vấn mảng

{ "_id": "apples", "qty": 5 }
{ "_id": "bananas", "qty": 7 }
{ "_id": "oranges", "qty": { "in stock": 8, "ordered": 12 } }
{ "_id": "avocados", "qty": "fourteen" }
91 trong bộ sưu tập BIOS.

Hoạt động sau tìm thấy các tài liệu trong bộ sưu tập BIOS và chỉ trả về trường

{ "_id": "apples", "qty": 5 }
{ "_id": "bananas", "qty": 7 }
{ "_id": "oranges", "qty": { "in stock": 8, "ordered": 12 } }
{ "_id": "avocados", "qty": "fourteen" }
37 và trường
{ "_id": "apples", "qty": 5 }
{ "_id": "bananas", "qty": 7 }
{ "_id": "oranges", "qty": { "in stock": 8, "ordered": 12 } }
{ "_id": "avocados", "qty": "fourteen" }
77:

db.collection.find( { qty: { $gt: 4 } } )

4

Các truy vấn hoạt động sau đây Bộ sưu tập BIOS và trả về trường

{ "_id": "apples", "qty": 5 }
{ "_id": "bananas", "qty": 7 }
{ "_id": "oranges", "qty": { "in stock": 8, "ordered": 12 } }
{ "_id": "avocados", "qty": "fourteen" }
36 trong tài liệu nhúng
{ "_id": "apples", "qty": 5 }
{ "_id": "bananas", "qty": 7 }
{ "_id": "oranges", "qty": { "in stock": 8, "ordered": 12 } }
{ "_id": "avocados", "qty": "fourteen" }
37 và hai phần tử đầu tiên trong mảng
{ "_id": "apples", "qty": 5 }
{ "_id": "bananas", "qty": 7 }
{ "_id": "oranges", "qty": { "in stock": 8, "ordered": 12 } }
{ "_id": "avocados", "qty": "fourteen" }
77:

db.collection.find( { qty: { $gt: 4 } } )

5

Bắt đầu từ MongoDB 4.4, bạn cũng có thể chỉ định các trường được nhúng bằng mẫu lồng nhau, ví dụ:

db.collection.find( { qty: { $gt: 4 } } )

6

Bắt đầu từ MongoDB 4.4, phép chiếu

db.bios.find(
{ "name.last": { $regex: /^N/ } }
)
8 có thể chấp nhận các biểu thức tổng hợp và cú pháp.
db.bios.find(
{ "name.last": { $regex: /^N/ } }
)
8
projection can accept aggregation expressions and syntax.

Với việc sử dụng các biểu thức tổng hợp và cú pháp, bạn có thể chiếu các trường mới hoặc chiếu các trường hiện có với các giá trị mới. Ví dụ: thao tác sau sử dụng các biểu thức tổng hợp để ghi đè giá trị của các trường

{ "_id": "apples", "qty": 5 }
{ "_id": "bananas", "qty": 7 }
{ "_id": "oranges", "qty": { "in stock": 8, "ordered": 12 } }
{ "_id": "avocados", "qty": "fourteen" }
37 và
{ "_id": "apples", "qty": 5 }
{ "_id": "bananas", "qty": 7 }
{ "_id": "oranges", "qty": { "in stock": 8, "ordered": 12 } }
{ "_id": "avocados", "qty": "fourteen" }
91 cũng như bao gồm các trường mới

db.collection.find( { qty: { $gt: 4 } } )

24,

db.collection.find( { qty: { $gt: 4 } } )

25 và

db.collection.find( { qty: { $gt: 4 } } )

26.

db.collection.find( { qty: { $gt: 4 } } )

7

Để đặt trường

db.collection.find( { qty: { $gt: 4 } } )

27 thành giá trị

db.collection.find( { qty: { $gt: 4 } } )

28 Hoạt động trả về các tài liệu sau:

db.collection.find( { qty: { $gt: 4 } } )

8

Mẹo

Xem thêm:

Phương pháp

db.bios.find( { "name.last": "Hopper" } )

3 trả về một con trỏ cho kết quả.

db.bios.find( { "name.last": "Hopper" } )

3
method returns a cursor to the results.

Trong

db.bios.find( { _id: 5 } )

8, nếu con trỏ được trả về không được gán cho một biến bằng cách sử dụng từ khóa

db.collection.find( { qty: { $gt: 4 } } )

31, con trỏ sẽ tự động lặp lại để truy cập vào 20 tài liệu đầu tiên khớp với truy vấn. Bạn có thể đặt biến

db.collection.find( { qty: { $gt: 4 } } )

32 để thay đổi số lượng tài liệu lặp tự động.

db.bios.find( { _id: 5 } )

8
, if the returned cursor is not assigned to a variable using the

db.collection.find( { qty: { $gt: 4 } } )

31 keyword, the cursor is automatically iterated to access up to the first 20 documents that match the query. You can set the

db.collection.find( { qty: { $gt: 4 } } )

32 variable to change the number of automatically iterated documents.

Để lặp theo cách thủ công qua các kết quả, gán con trỏ được trả về cho một biến với từ khóa

db.collection.find( { qty: { $gt: 4 } } )

31, như được hiển thị trong các phần sau.

Ví dụ sau sử dụng biến

db.collection.find( { qty: { $gt: 4 } } )

34 để lặp qua con trỏ và in các tài liệu phù hợp:

db.collection.find( { qty: { $gt: 4 } } )

9

Ví dụ sau sử dụng phương pháp con trỏ

db.collection.find( { qty: { $gt: 4 } } )

35 để truy cập các tài liệu:

{ "_id": "apples", "qty": 5 }
{ "_id": "bananas", "qty": 7 }
0

Để in, bạn cũng có thể sử dụng phương thức

db.collection.find( { qty: { $gt: 4 } } )

36 thay vì

db.collection.find( { qty: { $gt: 4 } } )

37:

{ "_id": "apples", "qty": 5 }
{ "_id": "bananas", "qty": 7 }
1

Ví dụ sau sử dụng phương pháp con trỏ

db.collection.find( { qty: { $gt: 4 } } )

38 để lặp lại con trỏ và truy cập các tài liệu:

{ "_id": "apples", "qty": 5 }
{ "_id": "bananas", "qty": 7 }
2

db.bios.find( { _id: 5 } )

8 và các trình điều khiển cung cấp một số phương thức con trỏ kêu gọi con trỏ được trả về bằng phương pháp

db.bios.find( { "name.last": "Hopper" } )

3 để sửa đổi hành vi của nó. and the drivers provide several cursor methods that call on the cursor returned by the

db.bios.find( { "name.last": "Hopper" } )

3
method to modify its behavior.

Phương thức

db.collection.find( { qty: { $gt: 4 } } )

41 đặt hàng các tài liệu trong tập kết quả. Hoạt động sau đây trả về các tài liệu trong bộ sưu tập BIOS được sắp xếp theo thứ tự tăng dần theo trường
{ "_id": "apples", "qty": 5 }
{ "_id": "bananas", "qty": 7 }
{ "_id": "oranges", "qty": { "in stock": 8, "ordered": 12 } }
{ "_id": "avocados", "qty": "fourteen" }
37:

{ "_id": "apples", "qty": 5 }
{ "_id": "bananas", "qty": 7 }
3

db.collection.find( { qty: { $gt: 4 } } )

41 tương ứng với câu lệnh

db.collection.find( { qty: { $gt: 4 } } )

44 trong SQL.

Phương pháp

db.collection.find( { qty: { $gt: 4 } } )

45 giới hạn số lượng tài liệu trong tập kết quả. Hoạt động sau đây trả về nhiều nhất
{ "_id": "apples", "qty": 5 }
{ "_id": "bananas", "qty": 7 }
{ "_id": "oranges", "qty": { "in stock": 8, "ordered": 12 } }
{ "_id": "avocados", "qty": "fourteen" }
35 tài liệu trong bộ sưu tập BIOS:

{ "_id": "apples", "qty": 5 }
{ "_id": "bananas", "qty": 7 }
4

db.collection.find( { qty: { $gt: 4 } } )

45 tương ứng với câu lệnh

db.collection.find( { qty: { $gt: 4 } } )

48 trong SQL.

Phương pháp

db.collection.find( { qty: { $gt: 4 } } )

49 kiểm soát điểm bắt đầu của tập kết quả. Hoạt động sau bỏ qua các tài liệu
{ "_id": "apples", "qty": 5 }
{ "_id": "bananas", "qty": 7 }
{ "_id": "oranges", "qty": { "in stock": 8, "ordered": 12 } }
{ "_id": "avocados", "qty": "fourteen" }
35 đầu tiên trong bộ sưu tập BIOS và trả về tất cả các tài liệu còn lại:

Đối chiếu cho phép người dùng chỉ định các quy tắc cụ thể về ngôn ngữ để so sánh chuỗi, chẳng hạn như các quy tắc cho Lettercase và Dấu nhấn.

Phương pháp

db.collection.find( { qty: { $gt: 4 } } )

51 chỉ định đối chiếu cho hoạt động
db.bios.find(
{ "name.last": { $regex: /^N/ } }
)
8.
db.bios.find(
{ "name.last": { $regex: /^N/ } }
)
8
operation.

{ "_id": "apples", "qty": 5 }
{ "_id": "bananas", "qty": 7 }
5

Các báo cáo sau đây chuỗi các phương thức con trỏ

db.collection.find( { qty: { $gt: 4 } } )

45 và

db.collection.find( { qty: { $gt: 4 } } )

41

{ "_id": "apples", "qty": 5 }
{ "_id": "bananas", "qty": 7 }
6

Hai tuyên bố là tương đương; tức là thứ tự mà bạn chuỗi các phương pháp

db.collection.find( { qty: { $gt: 4 } } )

45 và

db.collection.find( { qty: { $gt: 4 } } )

41 không đáng kể. Cả hai câu lệnh trả về năm tài liệu đầu tiên, như được xác định bởi thứ tự sắp xếp tăng dần trên 'tên'.

  • db.collection.find( { qty: { $gt: 4 } } )

    57

  • db.collection.find( { qty: { $gt: 4 } } )

    58

  • db.collection.find( { qty: { $gt: 4 } } )

    59

  • db.collection.find( { qty: { $gt: 4 } } )

    60

  • db.collection.find( { qty: { $gt: 4 } } )

    61

  • db.collection.find( { qty: { $gt: 4 } } )

    62

  • db.collection.find( { qty: { $gt: 4 } } )

    63

  • db.collection.find( { qty: { $gt: 4 } } )

    64

  • db.collection.find( { qty: { $gt: 4 } } )

    65

  • db.collection.find( { qty: { $gt: 4 } } )

    66

  • db.collection.find( { qty: { $gt: 4 } } )

    67

  • db.collection.find( { qty: { $gt: 4 } } )

    68

  • db.collection.find( { qty: { $gt: 4 } } )

    69

  • db.collection.find( { qty: { $gt: 4 } } )

    70

  • db.collection.find( { qty: { $gt: 4 } } )

    71

  • db.collection.find( { qty: { $gt: 4 } } )

    72

  • db.collection.find( { qty: { $gt: 4 } } )

    73

  • db.collection.find( { qty: { $gt: 4 } } )

    74

  • db.collection.find( { qty: { $gt: 4 } } )

    75

  • db.collection.find( { qty: { $gt: 4 } } )

    76

  • db.collection.find( { qty: { $gt: 4 } } )

    77

  • db.collection.find( { qty: { $gt: 4 } } )

    78

  • db.collection.find( { qty: { $gt: 4 } } )

    79

  • { "_id": "apples", "qty": 5 }
    { "_id": "bananas", "qty": 7 }
    { "_id": "oranges", "qty": { "in stock": 8, "ordered": 12 } }
    { "_id": "avocados", "qty": "fourteen" }
    02

  • db.collection.find( { qty: { $gt: 4 } } )

    81

  • db.collection.find( { qty: { $gt: 4 } } )

    82

  • db.collection.find( { qty: { $gt: 4 } } )

    83

  • db.collection.find( { qty: { $gt: 4 } } )

    84

  • db.collection.find( { qty: { $gt: 4 } } )

    85

  • db.collection.find( { qty: { $gt: 4 } } )

    86

  • db.collection.find( { qty: { $gt: 4 } } )

    87

  • db.collection.find( { qty: { $gt: 4 } } )

    88

Bạn có thể chỉ định các tùy chọn truy vấn để sửa đổi hành vi truy vấn và cho biết cách trả về kết quả.

Ví dụ: để xác định các biến mà bạn có thể truy cập ở nơi khác trong phương thức

db.bios.find( { _id: 5 } )

9, hãy sử dụng tùy chọn

db.collection.find( { qty: { $gt: 4 } } )

90. Để lọc kết quả bằng cách sử dụng một biến, bạn phải truy cập biến trong toán tử

db.collection.find( { qty: { $gt: 4 } } )

91.

Tạo bộ sưu tập

db.collection.find( { qty: { $gt: 4 } } )

92:

{ "_id": "apples", "qty": 5 }
{ "_id": "bananas", "qty": 7 }
7

Ví dụ sau đây xác định biến

db.collection.find( { qty: { $gt: 4 } } )

93 trong

db.collection.find( { qty: { $gt: 4 } } )

90 và sử dụng biến để lấy hương vị bánh sô cô la:

{ "_id": "apples", "qty": 5 }
{ "_id": "bananas", "qty": 7 }
8

Output:

{ "_id": "apples", "qty": 5 }
{ "_id": "bananas", "qty": 7 }
9

Để xem tất cả các tùy chọn truy vấn có sẵn, xem FindOptions.FindOptions.

Làm thế nào lấy dữ liệu từ MongoDB?

Bạn có thể sử dụng các hoạt động đọc để truy xuất dữ liệu từ cơ sở dữ liệu MongoDB của bạn. Có nhiều loại hoạt động đọc truy cập dữ liệu theo các cách khác nhau. Nếu bạn muốn yêu cầu kết quả dựa trên một tập hợp các tiêu chí từ bộ dữ liệu hiện có, bạn có thể sử dụng một thao tác tìm kiếm như các phương thức Find () hoặc findOne ().use read operations to retrieve data from your MongoDB database. There are multiple types of read operations that access the data in different ways. If you want to request results based on a set of criteria from the existing set of data, you can use a find operation such as the find() or findOne() methods.

Tôi có thể tìm tệp MongoDB ở đâu?

Để kiểm tra tương tự, bạn có thể tìm cài đặt DBpath trong tệp cấu hình MongoDB ...
Trên Linux, vị trí là /etc/mongod.conf, nếu bạn đã sử dụng Trình quản lý gói để cài đặt MongoDB.....
Trên Windows, vị trí là /bin /Mongod.....
Trên macOS, vị trí là/usr/local/etc/Mongod ..

Làm cách nào để nhận tất cả các tài liệu của tôi từ MongoDB?

Sử dụng chương trình Java tạo một máy khách MongoDB bằng cách khởi tạo lớp Mongoclient.Kết nối với cơ sở dữ liệu bằng phương thức getDatabase ().Nhận đối tượng của bộ sưu tập mà bạn muốn truy xuất các tài liệu, sử dụng phương thức getCollection ().Create a MongoDB client by instantiating the MongoClient class. Connect to a database using the getDatabase() method. Get the object of the collection from which you want to retrieve the documents, using the getCollection() method.

Làm thế nào nhận được dữ liệu từ MongoDB đến HTML?

Bạn phải làm theo các bước dưới đây để hiển thị dữ liệu MongoDB trên trang HTML:..
Tạo ứng dụng Node Express JS ..
Cài đặt Express Flash EJS Body-Parser Mongoose phụ thuộc ..
Kết nối ứng dụng với MongoDB ..
Tạo mô hình ..
Tạo các tuyến đường ..
Tạo bảng HTML và danh sách hiển thị ..
Nhập các mô -đun trong ứng dụng.JS ..
Bắt đầu máy chủ ứng dụng ..