Bạn có thể sử dụng toán tử $type để kiểm tra xem một trường có chứa giá trị null hay không. Trước tiên chúng ta hãy tạo một bộ sưu tập với các tài liệu. Chúng tôi cũng đã chèn một giá trị rỗng vào một trường -
> db.nullDemo.insertOne[{"FirstName":"Chris"}]; { "acknowledged" : true, "insertedId" : ObjectId["5cc68a1eac184d684e3fa270"] } > db.nullDemo.insertOne[{"FirstName":null}]; { "acknowledged" : true, "insertedId" : ObjectId["5cc68a25ac184d684e3fa271"] } > db.nullDemo.insertOne[{"FirstName":"Robert"}]; { "acknowledged" : true, "insertedId" : ObjectId["5cc68a2cac184d684e3fa272"] }
Sau đây là truy vấn để hiển thị tất cả các tài liệu từ một bộ sưu tập với sự trợ giúp của phương thức find[] -
> db.nullDemo.find[].pretty[];
Điều này sẽ tạo ra đầu ra sau. Một trong các trường là null -
{ "_id" : ObjectId["5cc68a1eac184d684e3fa270"], "FirstName" : "Chris" } { "_id" : ObjectId["5cc68a25ac184d684e3fa271"], "FirstName" : null } { "_id" : ObjectId["5cc68a2cac184d684e3fa272"], "FirstName" : "Robert" }
Đây là truy vấn để kiểm tra xem một trường có chứa giá trị null hay không. Trường “FirstName” được chọn –
> db.nullDemo.find[ { FirstName: { $type: 10 } } ];
Điều này sẽ tạo ra đầu ra sau -
{ "_id" : ObjectId["5cc68a25ac184d684e3fa271"], "FirstName" : null }
Nếu bạn định sử dụng một chỉ mục thưa thớt, hãy đảm bảo rằng bạn đã đọc tài liệu cẩn thận như trong MongoDB 2. 6, một chỉ mục thưa thớt sẽ không được chọn khi nó có thể trả về kết quả không đầy đủ. Ví dụ,
> db. kiểm tra. tìm một". vô giá trị }]
sẽ trả về 1 kết quả nếu nó sử dụng chỉ mục thưa thớt trên a vì sẽ không có mục nhập chỉ mục cho tài liệu thiếu trường a. MongoDB >= 2. 6 sẽ không sử dụng chỉ mục thưa thớt trên a trừ khi chỉ mục thưa thớt được gợi ý rõ ràng
> db. kiểm tra. ensureIndex[{ "a". 1 }, { "thưa thớt". thật }]
> db. kiểm tra. đếm [{ "a". null }] // không sử dụng chỉ mục
> db. kiểm tra. đếm [{ "a". vô giá trị }]. gợi ý [{ "a". 1 }] // buộc phải sử dụng chỉ mục
Hy vọng rằng điều này hữu ích trong việc hướng dẫn bạn những việc cần làm với các trường bị thiếu/null. Vui lòng theo dõi các câu hỏi tiếp theo
Hôm nay trong bài viết chúng ta sẽ tìm hiểu cách MongoDB Query cho trường là null hay không được đặt i. e không tồn tại trong cơ sở dữ liệu. Chúng tôi sẽ xác minh các truy vấn bằng MongoShell hoặc các công cụ UI như Compass UI
Hôm nay trong bài viết này, chúng tôi sẽ đề cập đến các khía cạnh dưới đây,
- Bắt đầu
- Trường không được đặt trong MongoDB
- Trường này là null trong MongoDB
- Trường không có giá trị hoặc không được đặt trong MongoDB
Chúng tôi cũng sẽ chạy truy vấn bằng cách sử dụng. NET C# trình điều khiển mongo. Nếu muốn biết cách chạy truy vấn bằng cách sử dụng. NET C# mongo, vui lòng kiểm tra bài viết này,
Bắt đầu
Tôi có một tài liệu MongoDB mẫu như bên dưới trong một trong các bộ sưu tập. Ở đây chúng ta sẽ cố gắng tìm kiếm tất cả các tài liệu có trường Tác giả là NULL hoặc không được đặt trong tài liệu
Trường không được đặt trong MongoDB
Truy vấn bên dưới khớp với các tài liệu không chứa trường Tác giả
Cho đến nay trên các tài liệu Mongo, chúng tôi sẽ chỉ nhận được kết quả cho “_id”. ”5db5a4476997188b2722c820“
Mẫu truy vấn
{ Field Name: {$exists:false} }
Truy vấn mẫu
{ Author: {$exists:false} }
Kết quả
Sử dụng vỏ Mongo
Sử dụng la bàn
Ghi chú
Nếu $
> db.nullDemo.find[].pretty[];1 là sai, thì truy vấn chỉ trả về các tài liệu không chứa trường này
Trong câu truy vấn trên, bây giờ chúng ta sẽ nhận được kết quả chỉ là 1 tài liệu
> db.nullDemo.find[].pretty[];2 khi được đặt là true, giá trị này sẽ khớp với tài liệu chứa trường này, kể cả tài liệu có giá trị trường là
> db.nullDemo.find[].pretty[];3
Trường này là null trong MongoDB
Truy vấn bên dưới khớp với các tài liệu chứa trường Tác giả được đặt thành null
Ở đây, chúng tôi giả định rằng các trường đã tồn tại và không muốn xem xét các bản ghi nơi các bản ghi không tồn tại trường
Cho đến nay trên các tài liệu Mongo, chúng tôi sẽ chỉ nhận được kết quả cho id = 5ff50353a29ce9564c2724e2
Mẫu truy vấn
{$and:[{Field Name:{$type:'null'}}]}
Truy vấn mẫu
Kết quả
Sử dụng vỏ Mongo
Sử dụng la bàn
Trường không có giá trị hoặc không được đặt trong MongoDB
Bây giờ hãy xem liệu bạn có yêu cầu tìm các bản ghi mà Trường không được đặt hoặc không tồn tại trong MongoDB
Mẫu truy vấn
{$and:[{Field Name:null }]}
Ví dụ truy vấn
> db.nullDemo.find[].pretty[];0
Truy vấn trên không hoạt động đối với 2 điều kiện bên dưới
- phù hợp với giá trị "Tác giả" là NULL
- và phù hợp với trường "Tác giả" không tồn tại
Kết quả
vỏ mongo
giao diện người dùng la bàn
Đó là tất cả, Vì vậy, hôm nay chúng ta đã học truy vấn mongo đơn giản để xác định các bản ghi có trường rỗng hoặc không được đặt. Khá dễ dàng để chuẩn bị truy vấn cho những nhu cầu như vậy