Tôi đang cố lấy danh sách thành viên. Trong mongodb mảng là một danh sách các ObjectIds. Nhưng khi tôi chạy truy vấn thì không tìm thấy gì. Tôi biết ID thực tế là hợp lệ. Có thể có một số người dùng đã bị xóa, nhưng hầu hết trong số họ vẫn tồn tại.
Trên máy chủ của chúng tôi, chúng tôi đang tạo truy vấn bằng Mongoose và nó hoạt động tốt, nhưng tôi không chắc cách thực hiện điều đó ở đây. Có vẻ như các tùy chọn của tôi là chuyển đổi chuỗi thành đối tượng trong truy vấn của người dùng hoặc dữ liệu gốc dưới dạng trình biến đổi sau truy vấn trên nguồn dữ liệu. Tôi đã thử một vài lần, nhưng tôi không chắc liệu mình có đang đi đúng hướng hay không.
Truy vấn này hoạt động, nhưng truy vấn đó dành cho một người dùng và tôi có thể chỉ định truy vấn đó phải được coi là $oid
MongoDB cung cấp $lookup để tham gia bộ sưu tập với các bộ sưu tập khác. Ví dụ: giả sử khách hàng có danh sách đơn đặt hàng và chúng tôi muốn biết ánh xạ bộ sưu tập của khách hàng tới sản phẩm mà khách hàng đã đặt hàng
Hãy lấy một bộ sưu tập khách hàng
Ở đây chúng tôi có các đơn đặt hàng với id của bộ sưu tập đơn hàng và chúng tôi sẽ ánh xạ khóa đơn hàng tới bộ sưu tập đơn hàng
db.customers.insert[[ { "_id": 1, "name": "Jason", "orders": [1,2] }, { "_id": 2, "name": "Drake", "orders": [2,3] }, { "_id": 3, "name": "John", "orders":[1] } ]]
Bây giờ chúng ta hãy lấy một bộ sưu tập đơn đặt hàng
db.orders.insert[[ { "_id": 1, "productName": "Ipad", "price": 20 }, { "_id": 2, "productName": "Laptop", "price": 10 }, { "_id": 3, "productName": "Computer Accessories", "price":40 } ]]
Bây giờ chúng tôi sử dụng $lookup để tham gia các bộ sưu tập trên. Hãy xem trong hành động
db.customers.aggregate[[ { $project: { _id: 1, name: 1, orders: 1 } }, { $lookup: { from: "orders", localField: "orders", foreignField: "_id", as: "orders" } } ]]
Bấm chạy để xem kết quả
Như bạn có thể thấy ở trên cách các đơn đặt hàng từ bộ sưu tập khách hàng được ánh xạ tới bộ sưu tập đơn đặt hàng bằng cách sử dụng _id
_id chúng tôi có trong mảng đơn đặt hàng của khách hàng là _id tùy chỉnh không phải là Id được tạo tự động duy nhất của mongodb
Điều gì sẽ xảy ra nếu họ có mảng Id được tạo tự động. Hãy xem một ví dụ
db.customers.insert[ [ { "_id": 1, "name": "Jason", "orders": [ "5e671cc4a5c7ed3fa4e2226a", "5f5cf89f05f4a755e8570378" ] }, { "_id": 2, "name": "Drake", "orders": [ "5dd4ec16661c583dd88815e5", "5e671cc4a5c7ed3fa4e2226a" ] }, { "_id": 3, "name": "John", "orders": [ "5dd4ec16661c583dd88815e5" ] } ] ]
Thu thập đơn đặt hàng với Id đối tượng được tạo tự động
db.orders.insert[ [ { "_id": ObjectId["5e671cc4a5c7ed3fa4e2226a"], "productName": "Ipad", "price": 20 }, { "_id": ObjectId["5f5cf89f05f4a755e8570378"], "productName": "Laptop", "price": 10 }, { "_id": ObjectId["5dd4ec16661c583dd88815e5"], "productName": "Computer Accessories", "price": 40 } ] ]
Sử dụng tra cứu $ ngay bây giờ để kiểm tra xem nó có hoạt động không
db.customers.aggregate[[ { $project: { _id: 1, name: 1, orders: 1 } }, { $lookup: { from: "orders", localField: "orders", foreignField: "_id", as: "orders" } } ]]
Như bạn có thể thấy nó không hoạt động vì bộ sưu tập đơn đặt hàng của chúng tôi có _id là ObjectId và bộ sưu tập khách hàng có mảng id chuỗi nhưng không phải là ObjectId
Trên thực tế,
db.orders.insert[[ { "_id": 1, "productName": "Ipad", "price": 20 }, { "_id": 2, "productName": "Laptop", "price": 10 }, { "_id": 3, "productName": "Computer Accessories", "price":40 } ]]26 luôn trả về trường mới ở dạng mảng. Vì vậy, để chọn trường từ mảng đó, bạn cần sử dụng
db.orders.insert[[ { "_id": 1, "productName": "Ipad", "price": 20 }, { "_id": 2, "productName": "Laptop", "price": 10 }, { "_id": 3, "productName": "Computer Accessories", "price":40 } ]]27 hoặc có thể
db.orders.insert[[ { "_id": 1, "productName": "Ipad", "price": 20 }, { "_id": 2, "productName": "Laptop", "price": 10 }, { "_id": 3, "productName": "Computer Accessories", "price":40 } ]]28 để chọn phần tử thứ 0
Đối số có thể là bất kỳ biểu thức hợp lệ nào phân giải thành một trong các số hoặc chuỗi định danh sau
Mã định danh chuỗi
Định danh số
ghi chú
"kép"
1
Để biết thêm thông tin về chuyển đổi thành gấp đôi, hãy xem Chuyển đổi thành gấp đôi.
"sợi dây"
2
Để biết thêm thông tin về chuyển đổi thành chuỗi, hãy xem Chuyển đổi thành Chuỗi.
"ID đối tượng"
7
Để biết thêm thông tin về chuyển đổi thành objectId, hãy xem Chuyển đổi thành ObjectId.
"bool"
8
Để biết thêm thông tin về chuyển đổi sang boolean, hãy xem Chuyển đổi sang Boolean.
"ngày"
9
Để biết thêm thông tin về chuyển đổi sang ngày, hãy xem Chuyển đổi sang ngày.
"int"
16
Để biết thêm thông tin về chuyển đổi thành số nguyên, hãy xem Chuyển đổi thành số nguyên.
"Dài"
18
Để biết thêm thông tin về chuyển đổi thành dài, hãy xem Chuyển đổi thành dài.
"số thập phân"
19
Để biết thêm thông tin về chuyển đổi sang số thập phân, hãy xem Chuyển đổi sang số thập phân.
3{ input: ISODate[ "2018-03-26T04:38:28.044Z" ], to: "bool"}
Không bắt buộc. Giá trị trả về khi gặp lỗi trong quá trình chuyển đổi, bao gồm cả chuyển đổi loại không được hỗ trợ. Các đối số có thể là bất kỳ biểu thức hợp lệ nào Nếu không được chỉ định, thao tác sẽ đưa ra lỗi khi gặp lỗi và dừng lại
4{ input: ISODate[ "2018-03-26T04:38:28.044Z" ], to: "bool"}
Không bắt buộc. Giá trị trả về nếu
1 là null hoặc bị thiếu. Các đối số có thể là bất kỳ biểu thức hợp lệ nào{ input: ISODate[ "2018-03-26T04:38:28.044Z" ], to: "bool"}
Nếu không được chỉ định,
8 trả về null nếu { input: 100, to: "bool" }
{ input: ISODate[ "2018-03-26T04:38:28.044Z" ], to: "bool"}
1 là null hoặc bị thiếu. Ngoài
8 , MongoDB cung cấp các toán tử tổng hợp sau dưới dạng tốc ký khi hành vi "onError" và "onNull" mặc định được chấp nhận. { input: 100, to: "bool" }
9{ input: ISODate[ "2018-03-26T04:38:28.044Z" ], to: "bool"}
db.orders.insert[[ { "_id": 1, "productName": "Ipad", "price": 20 }, { "_id": 2, "productName": "Laptop", "price": 10 }, { "_id": 3, "productName": "Computer Accessories", "price":40 } ]]
30db.orders.insert[[ { "_id": 1, "productName": "Ipad", "price": 20 }, { "_id": 2, "productName": "Laptop", "price": 10 }, { "_id": 3, "productName": "Computer Accessories", "price":40 } ]]
31db.orders.insert[[ { "_id": 1, "productName": "Ipad", "price": 20 }, { "_id": 2, "productName": "Laptop", "price": 10 }, { "_id": 3, "productName": "Computer Accessories", "price":40 } ]]
32db.orders.insert[[ { "_id": 1, "productName": "Ipad", "price": 20 }, { "_id": 2, "productName": "Laptop", "price": 10 }, { "_id": 3, "productName": "Computer Accessories", "price":40 } ]]
33db.orders.insert[[ { "_id": 1, "productName": "Ipad", "price": 20 }, { "_id": 2, "productName": "Laptop", "price": 10 }, { "_id": 3, "productName": "Computer Accessories", "price":40 } ]]
34db.orders.insert[[ { "_id": 1, "productName": "Ipad", "price": 20 }, { "_id": 2, "productName": "Laptop", "price": 10 }, { "_id": 3, "productName": "Computer Accessories", "price":40 } ]]
35db.orders.insert[[ { "_id": 1, "productName": "Ipad", "price": 20 }, { "_id": 2, "productName": "Laptop", "price": 10 }, { "_id": 3, "productName": "Computer Accessories", "price":40 } ]]
36
Hành vi
Chuyển đổi thành Boolean
Bảng sau liệt kê các loại đầu vào có thể được chuyển đổi thành boolean
Kiểu đầu vào
Hành vi
Boolean
Không ra đâu. Trả về giá trị boolean
Kép
Trả về true nếu không bằng không Trả về false nếu không
Số thập phân
Trả về true nếu không bằng không Trả về false nếu không
số nguyên
Trả về true nếu không bằng không Trả về false nếu không
Dài
Trả về true nếu không bằng không Trả về false nếu không
ID đối tượng
Trả về đúng
Sợi dây
Trả về đúng
Ngày
Trả về đúng
dấu thời gian
Trả về đúng
Bảng sau đây liệt kê một số chuyển đổi sang ví dụ boolean
Thí dụ
Kết quả
db.customers.aggregate[[
{
$project: {
_id: 1,
name: 1,
orders: 1
}
},
{
$lookup: {
from: "orders",
localField: "orders",
foreignField: "_id",
as: "orders"
}
}
]]
0
thật
db.customers.aggregate[[
{
$project: {
_id: 1,
name: 1,
orders: 1
}
},
{
$lookup: {
from: "orders",
localField: "orders",
foreignField: "_id",
as: "orders"
}
}
]]
1
sai
db.customers.aggregate[[
{
$project: {
_id: 1,
name: 1,
orders: 1
}
},
{
$lookup: {
from: "orders",
localField: "orders",
foreignField: "_id",
as: "orders"
}
}
]]
2
thật
db.customers.aggregate[[
{
$project: {
_id: 1,
name: 1,
orders: 1
}
},
{
$lookup: {
from: "orders",
localField: "orders",
foreignField: "_id",
as: "orders"
}
}
]]
3
thật
db.customers.aggregate[[
{
$project: {
_id: 1,
name: 1,
orders: 1
}
},
{
$lookup: {
from: "orders",
localField: "orders",
foreignField: "_id",
as: "orders"
}
}
]]
4
sai
{ input: 100, to: "bool" }
thật
{ input: ISODate[ "2018-03-26T04:38:28.044Z" ], to: "bool"}
thật
db.orders.insert[[
{ "_id": 1, "productName": "Ipad", "price": 20 },
{ "_id": 2, "productName": "Laptop", "price": 10 },
{ "_id": 3, "productName": "Computer Accessories", "price":40 }
]]
3
thật
db.customers.aggregate[[
{
$project: {
_id: 1,
name: 1,
orders: 1
}
},
{
$lookup: {
from: "orders",
localField: "orders",
foreignField: "_id",
as: "orders"
}
}
]]
8
thật
db.customers.aggregate[[
{
$project: {
_id: 1,
name: 1,
orders: 1
}
},
{
$lookup: {
from: "orders",
localField: "orders",
foreignField: "_id",
as: "orders"
}
}
]]
00
thật
db.customers.aggregate[[
{
$project: {
_id: 1,
name: 1,
orders: 1
}
},
{
$lookup: {
from: "orders",
localField: "orders",
foreignField: "_id",
as: "orders"
}
}
]]
01
vô giá trị
Mẹo
Xem thêm
{ input: ISODate[ "2018-03-26T04:38:28.044Z" ], to: "bool"}
9Chuyển đổi thành số nguyên
Bảng sau liệt kê các loại đầu vào có thể được chuyển đổi thành số nguyên
Kiểu đầu vào
Hành vi
Boolean
Trả về db.orders.insert[[
{ "_id": 1, "productName": "Ipad", "price": 20 },
{ "_id": 2, "productName": "Laptop", "price": 10 },
{ "_id": 3, "productName": "Computer Accessories", "price":40 }
]]
38 cho db.orders.insert[[
{ "_id": 1, "productName": "Ipad", "price": 20 },
{ "_id": 2, "productName": "Laptop", "price": 10 },
{ "_id": 3, "productName": "Computer Accessories", "price":40 }
]]
39
Trả về
db.customers.aggregate[[ { $project: { _id: 1, name: 1, orders: 1 } }, { $lookup: { from: "orders", localField: "orders", foreignField: "_id", as: "orders" } } ]]80 cho
db.customers.aggregate[[ { $project: { _id: 1, name: 1, orders: 1 } }, { $lookup: { from: "orders", localField: "orders", foreignField: "_id", as: "orders" } } ]]81
Kép
Trả về giá trị bị cắt bớt Giá trị gấp đôi bị cắt ngắn phải nằm trong giá trị tối thiểu và tối đa cho một số nguyên Bạn không thể chuyển đổi một giá trị kép có giá trị bị cắt bớt nhỏ hơn giá trị số nguyên tối thiểu hoặc lớn hơn giá trị số nguyên tối đa
Số thập phân
Trả về giá trị bị cắt bớt Giá trị thập phân bị cắt ngắn phải nằm trong giá trị tối thiểu và tối đa cho một số nguyên Bạn không thể chuyển đổi giá trị thập phân có giá trị bị cắt bớt nhỏ hơn giá trị số nguyên tối thiểu hoặc lớn hơn giá trị số nguyên tối đa
số nguyên
Không ra đâu. Trả về giá trị số nguyên
Dài
Trả về giá trị dài dưới dạng số nguyên Giá trị dài phải nằm trong giá trị tối thiểu và tối đa cho một số nguyên Bạn không thể chuyển đổi một giá trị dài nhỏ hơn giá trị số nguyên tối thiểu hoặc lớn hơn giá trị số nguyên tối đa
Sợi dây
Trả về giá trị số của chuỗi dưới dạng số nguyên Giá trị chuỗi phải là số nguyên cơ số 10 [e. g. db.customers.aggregate[[
{
$project: {
_id: 1,
name: 1,
orders: 1
}
},
{
$lookup: {
from: "orders",
localField: "orders",
foreignField: "_id",
as: "orders"
}
}
]]
82, db.customers.aggregate[[
{
$project: {
_id: 1,
name: 1,
orders: 1
}
},
{
$lookup: {
from: "orders",
localField: "orders",
foreignField: "_id",
as: "orders"
}
}
]]
83] và nằm trong giá trị tối thiểu và tối đa cho một số nguyên
Bạn không thể chuyển đổi giá trị chuỗi của số thực hoặc số thập phân hoặc số không phải cơ số 10 [e. g.
db.customers.aggregate[[ { $project: { _id: 1, name: 1, orders: 1 } }, { $lookup: { from: "orders", localField: "orders", foreignField: "_id", as: "orders" } } ]]84,
db.customers.aggregate[[ { $project: { _id: 1, name: 1, orders: 1 } }, { $lookup: { from: "orders", localField: "orders", foreignField: "_id", as: "orders" } } ]]85] hoặc giá trị nằm ngoài giá trị tối thiểu và tối đa cho một số nguyên
Bảng sau đây liệt kê một số ví dụ chuyển đổi sang số nguyên
Thí dụ
Kết quả
db.customers.aggregate[[
{
$project: {
_id: 1,
name: 1,
orders: 1
}
},
{
$lookup: {
from: "orders",
localField: "orders",
foreignField: "_id",
as: "orders"
}
}
]]
02
1
db.customers.aggregate[[
{
$project: {
_id: 1,
name: 1,
orders: 1
}
},
{
$lookup: {
from: "orders",
localField: "orders",
foreignField: "_id",
as: "orders"
}
}
]]
03
0
db.customers.aggregate[[
{
$project: {
_id: 1,
name: 1,
orders: 1
}
},
{
$lookup: {
from: "orders",
localField: "orders",
foreignField: "_id",
as: "orders"
}
}
]]
04
1
db.customers.aggregate[[
{
$project: {
_id: 1,
name: 1,
orders: 1
}
},
{
$lookup: {
from: "orders",
localField: "orders",
foreignField: "_id",
as: "orders"
}
}
]]
05
5
db.customers.aggregate[[
{
$project: {
_id: 1,
name: 1,
orders: 1
}
},
{
$lookup: {
from: "orders",
localField: "orders",
foreignField: "_id",
as: "orders"
}
}
]]
06
Lỗi
db.customers.aggregate[[
{
$project: {
_id: 1,
name: 1,
orders: 1
}
},
{
$lookup: {
from: "orders",
localField: "orders",
foreignField: "_id",
as: "orders"
}
}
]]
07
5000
db.customers.aggregate[[
{
$project: {
_id: 1,
name: 1,
orders: 1
}
},
{
$lookup: {
from: "orders",
localField: "orders",
foreignField: "_id",
as: "orders"
}
}
]]
08
Lỗi
db.customers.aggregate[[
{
$project: {
_id: 1,
name: 1,
orders: 1
}
},
{
$lookup: {
from: "orders",
localField: "orders",
foreignField: "_id",
as: "orders"
}
}
]]
09
-2
db.customers.aggregate[[
{
$project: {
_id: 1,
name: 1,
orders: 1
}
},
{
$lookup: {
from: "orders",
localField: "orders",
foreignField: "_id",
as: "orders"
}
}
]]
10
Lỗi
db.customers.aggregate[[
{
$project: {
_id: 1,
name: 1,
orders: 1
}
},
{
$lookup: {
from: "orders",
localField: "orders",
foreignField: "_id",
as: "orders"
}
}
]]
11
vô giá trị
Mẹo
Xem thêm
Nhà điều hành
db.orders.insert[[ { "_id": 1, "productName": "Ipad", "price": 20 }, { "_id": 2, "productName": "Laptop", "price": 10 }, { "_id": 3, "productName": "Computer Accessories", "price":40 } ]]33
Chuyển đổi thành số thập phân
Bảng sau liệt kê các loại đầu vào có thể được chuyển đổi thành số thập phân
Kiểu đầu vào
Hành vi
Boolean
Trả về db.customers.aggregate[[
{
$project: {
_id: 1,
name: 1,
orders: 1
}
},
{
$lookup: {
from: "orders",
localField: "orders",
foreignField: "_id",
as: "orders"
}
}
]]
87 cho db.orders.insert[[
{ "_id": 1, "productName": "Ipad", "price": 20 },
{ "_id": 2, "productName": "Laptop", "price": 10 },
{ "_id": 3, "productName": "Computer Accessories", "price":40 }
]]
39
Trả về
db.customers.aggregate[[ { $project: { _id: 1, name: 1, orders: 1 } }, { $lookup: { from: "orders", localField: "orders", foreignField: "_id", as: "orders" } } ]]89 cho
db.customers.aggregate[[ { $project: { _id: 1, name: 1, orders: 1 } }, { $lookup: { from: "orders", localField: "orders", foreignField: "_id", as: "orders" } } ]]81
Kép
Trả về giá trị gấp đôi dưới dạng số thập phân
Số thập phân
Không ra đâu. Trả về số thập phân
số nguyên
Trả về giá trị int dưới dạng số thập phân
Dài
Trả về giá trị dài dưới dạng số thập phân
Sợi dây
Trả về giá trị số của chuỗi dưới dạng số thập phân Giá trị chuỗi phải là giá trị số cơ số 10 [e. g. db.customers.aggregate[[
{
$project: {
_id: 1,
name: 1,
orders: 1
}
},
{
$lookup: {
from: "orders",
localField: "orders",
foreignField: "_id",
as: "orders"
}
}
]]
001, db.customers.aggregate[[
{
$project: {
_id: 1,
name: 1,
orders: 1
}
},
{
$lookup: {
from: "orders",
localField: "orders",
foreignField: "_id",
as: "orders"
}
}
]]
83]
Bạn không thể chuyển đổi một giá trị chuỗi của một số không phải cơ số 10 [e. g.
db.customers.aggregate[[ { $project: { _id: 1, name: 1, orders: 1 } }, { $lookup: { from: "orders", localField: "orders", foreignField: "_id", as: "orders" } } ]]85]
Ngày
Trả về số mili giây kể từ kỷ nguyên tương ứng với giá trị ngày
Bảng sau đây liệt kê một số ví dụ chuyển đổi sang số thập phân
Thí dụ
Kết quả
db.customers.aggregate[[
{
$project: {
_id: 1,
name: 1,
orders: 1
}
},
{
$lookup: {
from: "orders",
localField: "orders",
foreignField: "_id",
as: "orders"
}
}
]]
12
Thập phân128["1"]
db.customers.aggregate[[
{
$project: {
_id: 1,
name: 1,
orders: 1
}
},
{
$lookup: {
from: "orders",
localField: "orders",
foreignField: "_id",
as: "orders"
}
}
]]
13
Thập phân128["0"]
db.customers.aggregate[[
{
$project: {
_id: 1,
name: 1,
orders: 1
}
},
{
$lookup: {
from: "orders",
localField: "orders",
foreignField: "_id",
as: "orders"
}
}
]]
14
Thập phân128["2. 50000000000000"]
db.customers.aggregate[[
{
$project: {
_id: 1,
name: 1,
orders: 1
}
},
{
$lookup: {
from: "orders",
localField: "orders",
foreignField: "_id",
as: "orders"
}
}
]]
15
Thập phân128["5"]
db.customers.aggregate[[
{
$project: {
_id: 1,
name: 1,
orders: 1
}
},
{
$lookup: {
from: "orders",
localField: "orders",
foreignField: "_id",
as: "orders"
}
}
]]
16
Thập phân128["10000"]
db.customers.aggregate[[
{
$project: {
_id: 1,
name: 1,
orders: 1
}
},
{
$lookup: {
from: "orders",
localField: "orders",
foreignField: "_id",
as: "orders"
}
}
]]
17
Thập phân128["-5. 5"]
db.customers.aggregate[[
{
$project: {
_id: 1,
name: 1,
orders: 1
}
},
{
$lookup: {
from: "orders",
localField: "orders",
foreignField: "_id",
as: "orders"
}
}
]]
18
Thập phân128["1522039108044"]
Mẹo
Xem thêm
db.orders.insert[[ { "_id": 1, "productName": "Ipad", "price": 20 }, { "_id": 2, "productName": "Laptop", "price": 10 }, { "_id": 3, "productName": "Computer Accessories", "price":40 } ]]31
Chuyển đổi thành Double
Bảng sau đây liệt kê các loại đầu vào có thể được chuyển đổi thành kiểu kép
Kiểu đầu vào
Hành vi
Boolean
Trả về NumberDouble[0] cho db.orders.insert[[
{ "_id": 1, "productName": "Ipad", "price": 20 },
{ "_id": 2, "productName": "Laptop", "price": 10 },
{ "_id": 3, "productName": "Computer Accessories", "price":40 }
]]
39
Trả về NumberDouble[1] cho
db.customers.aggregate[[ { $project: { _id: 1, name: 1, orders: 1 } }, { $lookup: { from: "orders", localField: "orders", foreignField: "_id", as: "orders" } } ]]81
Kép
Không ra đâu. Trả về gấp đôi
Số thập phân
Trả về giá trị thập phân dưới dạng gấp đôi
Giá trị thập phân phải nằm trong giá trị tối thiểu và tối đa cho giá trị gấp đôi
Bạn không thể chuyển đổi giá trị thập phân có giá trị nhỏ hơn giá trị kép tối thiểu hoặc lớn hơn giá trị kép tối đa
số nguyên
Trả về giá trị int dưới dạng gấp đôi
Dài
Trả về giá trị dài dưới dạng gấp đôi
Sợi dây
Trả về giá trị số của chuỗi dưới dạng gấp đôi Giá trị chuỗi phải là giá trị số cơ số 10 [e. g. db.customers.aggregate[[
{
$project: {
_id: 1,
name: 1,
orders: 1
}
},
{
$lookup: {
from: "orders",
localField: "orders",
foreignField: "_id",
as: "orders"
}
}
]]
001, db.customers.aggregate[[
{
$project: {
_id: 1,
name: 1,
orders: 1
}
},
{
$lookup: {
from: "orders",
localField: "orders",
foreignField: "_id",
as: "orders"
}
}
]]
83] và nằm trong giá trị tối thiểu và tối đa cho một cú đúp
Bạn không thể chuyển đổi một giá trị chuỗi của một số không phải cơ số 10 [e. g.
db.customers.aggregate[[ { $project: { _id: 1, name: 1, orders: 1 } }, { $lookup: { from: "orders", localField: "orders", foreignField: "_id", as: "orders" } } ]]85] hoặc một giá trị nằm ngoài giá trị tối thiểu và tối đa cho giá trị gấp đôi
Ngày
Trả về số mili giây kể từ kỷ nguyên tương ứng với giá trị ngày
Bảng sau đây liệt kê một số ví dụ chuyển đổi sang gấp đôi
Thí dụ
Kết quả
db.customers.aggregate[[
{
$project: {
_id: 1,
name: 1,
orders: 1
}
},
{
$lookup: {
from: "orders",
localField: "orders",
foreignField: "_id",
as: "orders"
}
}
]]
19
1
db.customers.aggregate[[
{
$project: {
_id: 1,
name: 1,
orders: 1
}
},
{
$lookup: {
from: "orders",
localField: "orders",
foreignField: "_id",
as: "orders"
}
}
]]
20
0
db.customers.aggregate[[
{
$project: {
_id: 1,
name: 1,
orders: 1
}
},
{
$lookup: {
from: "orders",
localField: "orders",
foreignField: "_id",
as: "orders"
}
}
]]
21
2. 5
db.customers.aggregate[[
{
$project: {
_id: 1,
name: 1,
orders: 1
}
},
{
$lookup: {
from: "orders",
localField: "orders",
foreignField: "_id",
as: "orders"
}
}
]]
22
5
db.customers.aggregate[[
{
$project: {
_id: 1,
name: 1,
orders: 1
}
},
{
$lookup: {
from: "orders",
localField: "orders",
foreignField: "_id",
as: "orders"
}
}
]]
23
10000
db.customers.aggregate[[
{
$project: {
_id: 1,
name: 1,
orders: 1
}
},
{
$lookup: {
from: "orders",
localField: "orders",
foreignField: "_id",
as: "orders"
}
}
]]
24
-5. 5
db.customers.aggregate[[
{
$project: {
_id: 1,
name: 1,
orders: 1
}
},
{
$lookup: {
from: "orders",
localField: "orders",
foreignField: "_id",
as: "orders"
}
}
]]
25
50000000000
db.customers.aggregate[[
{
$project: {
_id: 1,
name: 1,
orders: 1
}
},
{
$lookup: {
from: "orders",
localField: "orders",
foreignField: "_id",
as: "orders"
}
}
]]
26
1522039108044
Mẹo
Xem thêm
db.orders.insert[[ { "_id": 1, "productName": "Ipad", "price": 20 }, { "_id": 2, "productName": "Laptop", "price": 10 }, { "_id": 3, "productName": "Computer Accessories", "price":40 } ]]32
Chuyển đổi thành Long
Bảng sau liệt kê các loại đầu vào có thể được chuyển đổi thành dạng dài
Kiểu đầu vào
Hành vi
Boolean
Trả về db.orders.insert[[
{ "_id": 1, "productName": "Ipad", "price": 20 },
{ "_id": 2, "productName": "Laptop", "price": 10 },
{ "_id": 3, "productName": "Computer Accessories", "price":40 }
]]
38 cho db.orders.insert[[
{ "_id": 1, "productName": "Ipad", "price": 20 },
{ "_id": 2, "productName": "Laptop", "price": 10 },
{ "_id": 3, "productName": "Computer Accessories", "price":40 }
]]
39
Trả về
db.customers.aggregate[[ { $project: { _id: 1, name: 1, orders: 1 } }, { $lookup: { from: "orders", localField: "orders", foreignField: "_id", as: "orders" } } ]]80 cho
db.customers.aggregate[[ { $project: { _id: 1, name: 1, orders: 1 } }, { $lookup: { from: "orders", localField: "orders", foreignField: "_id", as: "orders" } } ]]81
Kép
Trả về giá trị bị cắt bớt Giá trị gấp đôi bị cắt ngắn phải nằm trong giá trị tối thiểu và tối đa trong một thời gian dài Bạn không thể chuyển đổi một giá trị kép có giá trị bị cắt nhỏ hơn giá trị dài tối thiểu hoặc lớn hơn giá trị dài tối đa
Số thập phân
Trả về giá trị bị cắt bớt Giá trị thập phân bị cắt ngắn phải nằm trong giá trị tối thiểu và tối đa trong một thời gian dài Bạn không thể chuyển đổi giá trị thập phân có giá trị bị cắt nhỏ hơn giá trị dài tối thiểu hoặc lớn hơn giá trị dài tối đa
số nguyên
Trả về giá trị int dưới dạng long
Dài
Không ra đâu. Trả về giá trị dài
Sợi dây
Trả về giá trị số của chuỗi Giá trị chuỗi phải có độ dài cơ số 10 [e. g. db.customers.aggregate[[
{
$project: {
_id: 1,
name: 1,
orders: 1
}
},
{
$lookup: {
from: "orders",
localField: "orders",
foreignField: "_id",
as: "orders"
}
}
]]
82, db.customers.aggregate[[
{
$project: {
_id: 1,
name: 1,
orders: 1
}
},
{
$lookup: {
from: "orders",
localField: "orders",
foreignField: "_id",
as: "orders"
}
}
]]
83] và nằm trong giá trị tối thiểu và tối đa trong một thời gian dài
Bạn không thể chuyển đổi giá trị chuỗi của số thực hoặc số thập phân hoặc số không phải cơ số 10 [e. g.
db.customers.aggregate[[ { $project: { _id: 1, name: 1, orders: 1 } }, { $lookup: { from: "orders", localField: "orders", foreignField: "_id", as: "orders" } } ]]84,
db.customers.aggregate[[ { $project: { _id: 1, name: 1, orders: 1 } }, { $lookup: { from: "orders", localField: "orders", foreignField: "_id", as: "orders" } } ]]85] hoặc giá trị nằm ngoài giá trị tối thiểu và tối đa trong một thời gian dài
Ngày
Chuyển đổi Ngày thành số mili giây kể từ kỷ nguyên
Bảng sau đây liệt kê một số chuyển đổi thành các ví dụ dài
Thí dụ
Kết quả
db.customers.aggregate[[
{
$project: {
_id: 1,
name: 1,
orders: 1
}
},
{
$lookup: {
from: "orders",
localField: "orders",
foreignField: "_id",
as: "orders"
}
}
]]
27
Dài["1"]
db.customers.aggregate[[
{
$project: {
_id: 1,
name: 1,
orders: 1
}
},
{
$lookup: {
from: "orders",
localField: "orders",
foreignField: "_id",
as: "orders"
}
}
]]
28
Dài["0"]
db.customers.aggregate[[
{
$project: {
_id: 1,
name: 1,
orders: 1
}
},
{
$lookup: {
from: "orders",
localField: "orders",
foreignField: "_id",
as: "orders"
}
}
]]
29
Dài["2"]
db.customers.aggregate[[
{
$project: {
_id: 1,
name: 1,
orders: 1
}
},
{
$lookup: {
from: "orders",
localField: "orders",
foreignField: "_id",
as: "orders"
}
}
]]
30
Dài["5"]
db.customers.aggregate[[
{
$project: {
_id: 1,
name: 1,
orders: 1
}
},
{
$lookup: {
from: "orders",
localField: "orders",
foreignField: "_id",
as: "orders"
}
}
]]
31
Lỗi
db.customers.aggregate[[
{
$project: {
_id: 1,
name: 1,
orders: 1
}
},
{
$lookup: {
from: "orders",
localField: "orders",
foreignField: "_id",
as: "orders"
}
}
]]
32
Dài["8"]
db.customers.aggregate[[
{
$project: {
_id: 1,
name: 1,
orders: 1
}
},
{
$lookup: {
from: "orders",
localField: "orders",
foreignField: "_id",
as: "orders"
}
}
]]
33
Dài["1522039108044"]
db.customers.aggregate[[
{
$project: {
_id: 1,
name: 1,
orders: 1
}
},
{
$lookup: {
from: "orders",
localField: "orders",
foreignField: "_id",
as: "orders"
}
}
]]
34
Dài["-2"]
db.customers.aggregate[[
{
$project: {
_id: 1,
name: 1,
orders: 1
}
},
{
$lookup: {
from: "orders",
localField: "orders",
foreignField: "_id",
as: "orders"
}
}
]]
35
Lỗi
db.customers.aggregate[[
{
$project: {
_id: 1,
name: 1,
orders: 1
}
},
{
$lookup: {
from: "orders",
localField: "orders",
foreignField: "_id",
as: "orders"
}
}
]]
36
vô giá trị
Mẹo
Xem thêm
db.orders.insert[[ { "_id": 1, "productName": "Ipad", "price": 20 }, { "_id": 2, "productName": "Laptop", "price": 10 }, { "_id": 3, "productName": "Computer Accessories", "price":40 } ]]34
Chuyển đổi thành một ngày
Bảng sau đây liệt kê các loại đầu vào có thể được chuyển đổi thành ngày tháng
Kiểu đầu vào
Hành vi
Kép
Trả về một ngày tương ứng với số mili giây được biểu thị bằng giá trị kép bị cắt bớt Số dương tương ứng với số mili giây kể từ ngày 1 tháng 1 năm 1970 Số âm tương ứng với số mili giây trước ngày 1 tháng 1 năm 1970
Số thập phân
Trả về một ngày tương ứng với số mili giây được biểu thị bằng giá trị thập phân bị cắt ngắn Số dương tương ứng với số mili giây kể từ ngày 1 tháng 1 năm 1970 Số âm tương ứng với số mili giây trước ngày 1 tháng 1 năm 1970
Dài
Trả về một ngày tương ứng với số mili giây được biểu thị bằng giá trị dài
Số dương tương ứng với số mili giây kể từ ngày 1 tháng 1 năm 1970
Số âm tương ứng với số mili giây trước ngày 1 tháng 1 năm 1970
Sợi dây
Trả về một ngày tương ứng với chuỗi ngày Chuỗi phải là một chuỗi ngày hợp lệ, chẳng hạn như "2018-03-03" "2018-03-03T12. 00. 00Z" "2018-03-03T12. 00. 00+0500"
ID đối tượng
Trả về một ngày tương ứng với dấu thời gian của ObjectId
dấu thời gian
Trả về một ngày tương ứng với dấu thời gian
Bảng sau đây liệt kê một số ví dụ chuyển đổi sang ngày
Thí dụ
Kết quả
db.customers.aggregate[[
{
$project: {
_id: 1,
name: 1,
orders: 1
}
},
{
$lookup: {
from: "orders",
localField: "orders",
foreignField: "_id",
as: "orders"
}
}
]]
37
ISODate["1973-10-20T21. 20. 00. 000Z"]
db.customers.aggregate[[
{
$project: {
_id: 1,
name: 1,
orders: 1
}
},
{
$lookup: {
from: "orders",
localField: "orders",
foreignField: "_id",
as: "orders"
}
}
]]
38
ISODate["2009-09-19T14. 53. 56. 000Z"]
db.customers.aggregate[[
{
$project: {
_id: 1,
name: 1,
orders: 1
}
},
{
$lookup: {
from: "orders",
localField: "orders",
foreignField: "_id",
as: "orders"
}
}
]]
39
ISODate["2004-11-09T11. 33. 20. 000Z"]
db.customers.aggregate[[
{
$project: {
_id: 1,
name: 1,
orders: 1
}
},
{
$lookup: {
from: "orders",
localField: "orders",
foreignField: "_id",
as: "orders"
}
}
]]
40
ISODate["1935-02-22T12. 26. 40. 000Z"]
db.customers.aggregate[[
{
$project: {
_id: 1,
name: 1,
orders: 1
}
},
{
$lookup: {
from: "orders",
localField: "orders",
foreignField: "_id",
as: "orders"
}
}
]]
41
ISODate["2018-03-27T04. 08. 58. 000Z"]
db.customers.aggregate[[
{
$project: {
_id: 1,
name: 1,
orders: 1
}
},
{
$lookup: {
from: "orders",
localField: "orders",
foreignField: "_id",
as: "orders"
}
}
]]
42
ISODate["2018-03-03T00. 00. 00. 000Z"]
db.customers.aggregate[[
{
$project: {
_id: 1,
name: 1,
orders: 1
}
},
{
$lookup: {
from: "orders",
localField: "orders",
foreignField: "_id",
as: "orders"
}
}
]]
43
ISODate["2018-03-20T06. 00. 06. 000Z"]
db.customers.aggregate[[
{
$project: {
_id: 1,
name: 1,
orders: 1
}
},
{
$lookup: {
from: "orders",
localField: "orders",
foreignField: "_id",
as: "orders"
}
}
]]
44
Lỗi
db.customers.aggregate[[
{
$project: {
_id: 1,
name: 1,
orders: 1
}
},
{
$lookup: {
from: "orders",
localField: "orders",
foreignField: "_id",
as: "orders"
}
}
]]
45
ISODate["2021-11-23T17. 21. 58. 000Z"]
Mẹo
Xem thêm
Nhà điều hành
db.orders.insert[[ { "_id": 1, "productName": "Ipad", "price": 20 }, { "_id": 2, "productName": "Laptop", "price": 10 }, { "_id": 3, "productName": "Computer Accessories", "price":40 } ]]
30db.customers.aggregate[[ { $project: { _id: 1, name: 1, orders: 1 } }, { $lookup: { from: "orders", localField: "orders", foreignField: "_id", as: "orders" } } ]]
021
Chuyển đổi thành ObjectId
Bảng sau liệt kê các loại đầu vào có thể được chuyển đổi thành ObjectId
Kiểu đầu vào
Hành vi
Sợi dây
Trả về một ObjectId cho chuỗi thập lục phân có độ dài 24 Bạn không thể chuyển đổi giá trị chuỗi không phải là chuỗi thập lục phân có độ dài 24
Bảng sau đây liệt kê một số ví dụ chuyển đổi sang ngày
Thí dụ
Kết quả
db.customers.aggregate[[
{
$project: {
_id: 1,
name: 1,
orders: 1
}
},
{
$lookup: {
from: "orders",
localField: "orders",
foreignField: "_id",
as: "orders"
}
}
]]
46
ObjectId["5ab9cbfa31c2ab715d42129e"]
db.customers.aggregate[[
{
$project: {
_id: 1,
name: 1,
orders: 1
}
},
{
$lookup: {
from: "orders",
localField: "orders",
foreignField: "_id",
as: "orders"
}
}
]]
47
Lỗi
Mẹo
Xem thêm
Nhà điều hành
db.orders.insert[[ { "_id": 1, "productName": "Ipad", "price": 20 }, { "_id": 2, "productName": "Laptop", "price": 10 }, { "_id": 3, "productName": "Computer Accessories", "price":40 } ]]35
Chuyển đổi thành Chuỗi
Bảng sau liệt kê các loại đầu vào có thể được chuyển đổi thành chuỗi
Kiểu đầu vào
Hành vi
Boolean
Trả về giá trị boolean dưới dạng chuỗi
Kép
Trả về giá trị kép dưới dạng chuỗi
Số thập phân
Trả về giá trị thập phân dưới dạng chuỗi
số nguyên
Trả về giá trị số nguyên dưới dạng chuỗi
Dài
Trả về giá trị dài dưới dạng chuỗi
ID đối tượng
Trả về giá trị ObjectId dưới dạng chuỗi thập lục phân
Sợi dây
Không ra đâu. Trả về giá trị chuỗi
Ngày
Trả về ngày dưới dạng chuỗi
Bảng sau đây liệt kê một số ví dụ chuyển đổi thành chuỗi
Thí dụ
Kết quả
db.customers.aggregate[[
{
$project: {
_id: 1,
name: 1,
orders: 1
}
},
{
$lookup: {
from: "orders",
localField: "orders",
foreignField: "_id",
as: "orders"
}
}
]]
48
"thật"
db.customers.aggregate[[
{
$project: {
_id: 1,
name: 1,
orders: 1
}
},
{
$lookup: {
from: "orders",
localField: "orders",
foreignField: "_id",
as: "orders"
}
}
]]
49
"sai"
0{ input: 100, to: "bool" }
"2. 5"
1{ input: 100, to: "bool" }
"2"
2{ input: 100, to: "bool" }
"1000"
3{ input: 100, to: "bool" }
"5ab9c3da31c2ab715d421285"
4{ input: 100, to: "bool" }
"2018-03-27T16. 58. 51. 538Z"
Mẹo
Xem thêm
Nhà điều hành
db.orders.insert[[ { "_id": 1, "productName": "Ipad", "price": 20 }, { "_id": 2, "productName": "Laptop", "price": 10 }, { "_id": 3, "productName": "Computer Accessories", "price":40 } ]]
36db.customers.aggregate[[ { $project: { _id: 1, name: 1, orders: 1 } }, { $lookup: { from: "orders", localField: "orders", foreignField: "_id", as: "orders" } } ]]
024
Thí dụ
Tạo bộ sưu tập
db.customers.aggregate[[ { $project: { _id: 1, name: 1, orders: 1 } }, { $lookup: { from: "orders", localField: "orders", foreignField: "_id", as: "orders" } } ]]025 với các tài liệu sau
{ input: 100, to: "bool" }
5Hoạt động tổng hợp sau đây trên bộ sưu tập
db.customers.aggregate[[ { $project: { _id: 1, name: 1, orders: 1 } }, { $lookup: { from: "orders", localField: "orders", foreignField: "_id", as: "orders" } } ]]025 chuyển đổi
db.customers.aggregate[[ { $project: { _id: 1, name: 1, orders: 1 } }, { $lookup: { from: "orders", localField: "orders", foreignField: "_id", as: "orders" } } ]]027 thành số thập phân