Mongodb chuyển đổi mảng thành chuỗi

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.

Mongodb chuyển đổi mảng thành chuỗi

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 chuyển đổi mảng thành chuỗi

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.

{   input: ISODate( "2018-03-26T04:38:28.044Z" ),   to: "bool"}
3

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

{   input: ISODate( "2018-03-26T04:38:28.044Z" ),   to: "bool"}
4

Không bắt buộc. Giá trị trả về nếu

{   input: ISODate( "2018-03-26T04:38:28.044Z" ),   to: "bool"}
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

Nếu không được chỉ định,

{ input: 100, to: "bool" }
8 trả về null nếu
{   input: ISODate( "2018-03-26T04:38:28.044Z" ),   to: "bool"}
1 là null hoặc bị thiếu.

Ngoài

{ input: 100, to: "bool" }
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: ISODate( "2018-03-26T04:38:28.044Z" ),   to: "bool"}
    9

  • db.orders.insert([
      { "_id": 1, "productName": "Ipad", "price": 20 },
      { "_id": 2, "productName": "Laptop", "price": 10 },
      { "_id": 3, "productName": "Computer Accessories", "price":40 }
    ])
    30

  • db.orders.insert([
      { "_id": 1, "productName": "Ipad", "price": 20 },
      { "_id": 2, "productName": "Laptop", "price": 10 },
      { "_id": 3, "productName": "Computer Accessories", "price":40 }
    ])
    31

  • db.orders.insert([
      { "_id": 1, "productName": "Ipad", "price": 20 },
      { "_id": 2, "productName": "Laptop", "price": 10 },
      { "_id": 3, "productName": "Computer Accessories", "price":40 }
    ])
    32

  • db.orders.insert([
      { "_id": 1, "productName": "Ipad", "price": 20 },
      { "_id": 2, "productName": "Laptop", "price": 10 },
      { "_id": 3, "productName": "Computer Accessories", "price":40 }
    ])
    33

  • db.orders.insert([
      { "_id": 1, "productName": "Ipad", "price": 20 },
      { "_id": 2, "productName": "Laptop", "price": 10 },
      { "_id": 3, "productName": "Computer Accessories", "price":40 }
    ])
    34

  • db.orders.insert([
      { "_id": 1, "productName": "Ipad", "price": 20 },
      { "_id": 2, "productName": "Laptop", "price": 10 },
      { "_id": 3, "productName": "Computer Accessories", "price":40 }
    ])
    35

  • db.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
Mongodb chuyển đổi mảng thành chuỗi

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"}
9

Chuyể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 }
    ])
    30

  • db.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"

{ input: 100, to: "bool" }
0

"2. 5"

{ input: 100, to: "bool" }
1

"2"

{ input: 100, to: "bool" }
2

"1000"

{ input: 100, to: "bool" }
3

"5ab9c3da31c2ab715d421285"

{ input: 100, to: "bool" }
4

"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 }
    ])
    36

  • db.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" }
5

Hoạ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