Có thể truy vấn cho các đối tượng cụ thể trong một tài liệu lồng nhau? Đây là một ví dụ,
Collection : Threads
{
Documents : Messages
{
threadId = 1
messages = [
{
user = amy
date = 01/01/2012
content = hey
},
{
user = bell
date = 01/01/2012
content = hey
},
{
user = bell
date = 01/02/2012
content = whats up
}
]
},
{
threadId = 2
messages = [
{
user = courtney
date = 01/03/2012
content = first!
}
]
}
}
Tôi muốn truy vấn của tôi để nói { threadId : 1, 'messages.date' : { $gt : 01/01/2012 } }, { fields : { messages : 1 } }
. Nhưng nó sẽ trả lại tất cả các tin nhắn tài liệu đó khi thực sự tất cả những gì tôi muốn là kết quả là thế này,
messages = [
{
user = bell
date = 01/02/2012
content = whats up
}
]
Tài liệu về nhà → Hướng dẫn sử dụng MongoDB → MongoDB Manual
Sử dụng menu chọn ngôn ngữ của bạn ở phía trên bên phải để đặt ngôn ngữ của các ví dụ sau.Select your language drop-down menu in the upper-right to set the language of the following examples.
Ví dụ: truy vấn sau chọn tất cả các tài liệu trong đó trường size
bằng tài liệu { h: 14, w: 21, uom: "cm" }
:
Bình đẳng phù hợp trên toàn bộ tài liệu nhúng yêu cầu một kết hợp chính xác của tài liệu
messages = [
{
user = bell
date = 01/02/2012
content = whats up
}
]
0 được chỉ định, bao gồm cả thứ tự trường. Ví dụ: truy vấn sau không khớp với bất kỳ tài liệu nào trong bộ sưu tập messages = [
{
user = bell
date = 01/02/2012
content = whats up
}
]
1:Để chỉ định một điều kiện truy vấn trên các trường trong tài liệu nhúng/lồng nhau, hãy sử dụng ký hiệu DOT [
messages = [
{
user = bell
date = 01/02/2012
content = whats up
}
]
2].Ghi chú
Khi truy vấn sử dụng ký hiệu DOT, trường và trường lồng nhau phải ở bên trong dấu ngoặc kép.
Ví dụ sau chọn tất cả các tài liệu trong đó trường
messages = [
{
user = bell
date = 01/02/2012
content = whats up
}
]
3 lồng vào trường size
bằng messages = [
{
user = bell
date = 01/02/2012
content = whats up
}
]
5:Truy vấn sau sử dụng ít hơn toán tử [
messages = [
{
user = bell
date = 01/02/2012
content = whats up
}
]
6] trên trường messages = [
{
user = bell
date = 01/02/2012
content = whats up
}
]
7 được nhúng trong trường size
:
Truy vấn sau chọn tất cả các tài liệu trong đó trường lồng nhau
messages = [
{
user = bell
date = 01/02/2012
content = whats up
}
]
7 nhỏ hơn > db.queryNestedObject.insertOne[ ... { ... "StudentName" : "James", ... "StudentSubjectScore" : [ ... {"StudentMongoDBScore":98}, ... {"StudentCScore":92}, ... {"StudentJavaScore":91} ... ] ... } ... ]; { "acknowledged" : true, "insertedId" : ObjectId["5ccf49a9dceb9a92e6aa1962"] }0, trường lồng nhau
messages = [
{
user = bell
date = 01/02/2012
content = whats up
}
]
3 bằng messages = [
{
user = bell
date = 01/02/2012
content = whats up
}
]
5 và trường > db.queryNestedObject.insertOne[ ... { ... "StudentName" : "James", ... "StudentSubjectScore" : [ ... {"StudentMongoDBScore":98}, ... {"StudentCScore":92}, ... {"StudentJavaScore":91} ... ] ... } ... ]; { "acknowledged" : true, "insertedId" : ObjectId["5ccf49a9dceb9a92e6aa1962"] }3 bằng
> db.queryNestedObject.insertOne[ ... { ... "StudentName" : "James", ... "StudentSubjectScore" : [ ... {"StudentMongoDBScore":98}, ... {"StudentCScore":92}, ... {"StudentJavaScore":91} ... ] ... } ... ]; { "acknowledged" : true, "insertedId" : ObjectId["5ccf49a9dceb9a92e6aa1962"] }4:
Để biết các ví dụ truy vấn bổ sung, xem:
Tài liệu truy vấn
Truy vấn một mảng
Truy vấn một loạt các tài liệu nhúng
Để lấy một đối tượng lồng nhau trong MongoDB, hãy sử dụng toán tử $. 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 -
> db.queryNestedObject.insertOne[ ... { ... "StudentName" : "James", ... "StudentSubjectScore" : [ ... {"StudentMongoDBScore":98}, ... {"StudentCScore":92}, ... {"StudentJavaScore":91} ... ] ... } ... ]; { "acknowledged" : true, "insertedId" : ObjectId["5ccf49a9dceb9a92e6aa1962"] }
Sau đây là truy vấn để hiển thị tất cả các tài liệu từ bộ sưu tập với phương thức trợ giúp của find [] -
> db.queryNestedObject.find[].pretty[];
Điều này sẽ tạo ra đầu ra sau -
{ "_id" : ObjectId["5ccf49a9dceb9a92e6aa1962"], "StudentName" : "James", "StudentSubjectScore" : [ { "StudentMongoDBScore" : 98 }, { "StudentCScore" : 92 }, { "StudentJavaScore" : 91 } ] }
Sau đây là truy vấn để truy xuất một đối tượng lồng nhau -
> db.queryNestedObject.find[{'StudentSubjectScore.StudentJavaScore' : 91},{'StudentSubjectScore.$': 1 , _id: 0}];
Điều này sẽ tạo ra đầu ra sau -
{ "StudentSubjectScore" : [ { "StudentJavaScore" : 91 } ] }
Sau đây là truy vấn để truy xuất một đối tượng lồng nhau -
- Câu hỏi và câu trả lời liên quan
- Làm thế nào để lấy tất cả các lĩnh vực lồng nhau từ bộ sưu tập MongoDB?
- Lấy các giá trị từ mảng JSON lồng nhau trong MongoDB?
- Tăng giá trị trong một đối tượng lồng MongoDB?
- Truy vấn nhóm trên đối tượng lồng nhau trong MongoDB?
- MongoDB $ addtoset để thêm một mảng đối tượng lồng sâu?
- Làm thế nào để tạo một chỉ mục lồng nhau trong MongoDB?
- Làm thế nào để lấy tài liệu từ một bộ sưu tập ở MongoDB?
- Làm thế nào để chỉ nhận được dữ liệu của đối tượng JSON lồng nhau trong MongoDB?
- Làm thế nào để sửa đổi các thuộc tính của một đối tượng lồng nhau trong JavaScript?
- Lấy dữ liệu từ bộ sưu tập MongoDB?
- Làm thế nào để truy xuất một đối tượng Datalink từ bảng bằng JDBC?
- Chỉ lấy phần tử được truy vấn trong một mảng đối tượng trong bộ sưu tập MongoDB?
- Làm thế nào để tạo ra mảng lồng đôi trong MongoDB?
- Xây dựng một đối tượng JSON lồng nhau trong JavaScript
- Truy vấn MongoDB cho một tìm kiếm lồng nhau