Làm cách nào để chuyển đổi ObjectID thành chuỗi trong tổng hợp MongoDB?

Không có Toán tử trực tiếp trong hàm tổng hợp để lấy Chuỗi từ ObjectId. Sau phiên bản 2. 6 Bạn có thể sử dụng ObjectId. toString() để chuyển đổi ObjectId của bạn thành chuỗi. Trước tiên, bạn khớp và chiếu ObjectID của mình. Sau đó, bạn có thể chuyển đổi ID đối tượng này thành chuỗi bằng cách sử dụng ObjectID. toString()

Stack Overflow Public Duyệt các câu hỏi khác được gắn thẻ mongodb mongodb-query aggregation-framework hoặc hỏi MongoDB 3. 6 cách chuyển đổi chuỗi thành Id đối tượng. 2

Hành vi loại đầu vào; . Trả về giá trị boolean dưới dạng chuỗi. Gấp đôi. 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

Những gì bạn cần là một toán tử tổng hợp để chuyển đổi một chuỗi thành một ObjectId. Thật không may, không có chức năng như vậy tồn tại, kể từ MongoDB 2. 6. Tại sao bạn cần chuyển đổi chuỗi?

Ngày để chuyển đổi thành chuỗi. phải là một biểu thức hợp lệ phân giải thành Ngày, Dấu thời gian hoặc ID đối tượng. định dạng. Không bắt buộc. Đặc tả định dạng ngày. có thể là bất kỳ chuỗi ký tự nào, chứa 0 hoặc nhiều định dạng định dạng

Để chuyển đổi ObjectId thành chuỗi, hãy sử dụng $toString trong MongoDB. Để hiểu khái niệm trên, chúng ta hãy tạo một bộ sưu tập với tài liệu. Truy vấn để tạo một bộ sưu tập với một tài liệu như sau - 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()

Truy vấn cũng sẽ khớp với các tài liệu có giá trị của trường thẻ là chuỗi "B". Bằng một giá trị mảng ¶ Ví dụ sau truy vấn bộ sưu tập khoảng không quảng cáo để chọn tất cả các tài liệu trong đó mảng thẻ bằng chính xác mảng đã chỉ định hoặc mảng thẻ chứa phần tử bằng với mảng [ "A", "B" ]

Bạn có biết rằng mỗi ObjectId MongoDB chứa một dấu thời gian nhúng về thời gian tạo của nó không? . Trình chuyển đổi trực tuyến này sẽ chuyển đổi từ dấu thời gian sang ObjectId và ngược lại

Thời gian tạo của ObjectId có thể được truy cập bằng cách sử dụng MongoDB\BSON\ObjectId. phương thức getTimestamp(). Sắp xếp trên trường _id lưu trữ các giá trị ObjectId gần tương đương với sắp xếp theo thời gian tạo

Giả sử OP muốn lấy giá trị chuỗi thập lục phân của ObjectId, sử dụng Mongo 2. 2 trở lên, phương thức valueOf() trả về biểu diễn của đối tượng dưới dạng chuỗi thập lục phân. Điều này cũng đạt được với thuộc tính str

MongoDB\BSON\ObjectId công khai cuối cùng. lấy dấu thời gian ( khoảng trống). int Thành phần dấu thời gian của ObjectId là 32 bit quan trọng nhất của nó, biểu thị số giây kể từ kỷ nguyên Unix. Giá trị này được đọc dưới dạng số nguyên 32 bit không dấu với thứ tự byte cuối lớn

Khi đánh giá các tiêu chí truy vấn, MongoDB so sánh các loại và giá trị theo các quy tắc so sánh riêng của nó đối với các loại BSON, khác với các quy tắc tung hứng loại và so sánh của PHP. Khi khớp một loại BSON đặc biệt, tiêu chí truy vấn nên sử dụng lớp BSON tương ứng trong trình điều khiển (e. g. sử dụng MongoDB\BSON\ObjectId để khớp với một ObjectId)

Theo mặc định, MongoDB thực hiện thao tác chèn theo thứ tự. Với các lần chèn theo thứ tự, nếu xảy ra lỗi trong quá trình chèn một trong các tài liệu, MongoDB sẽ trả về lỗi mà không xử lý các tài liệu còn lại trong mảng. Các tài liệu trong mảng không nhất thiết phải có các trường giống nhau

ID đối tượng. getTimestamp() Trả về phần dấu thời gian của đối tượng dưới dạng Ngày. ID đối tượng. toString() Trả về biểu diễn JavaScript dưới dạng một chuỗi ký tự “ ObjectId() ”. ID đối tượng. valueOf() Trả về biểu diễn của đối tượng dưới dạng chuỗi thập lục phân. Chuỗi trả về là thuộc tính str

Nếu bộ sưu tập không tồn tại trong cơ sở dữ liệu, thì MongoDB sẽ tạo bộ sưu tập này và sau đó chèn một tài liệu vào đó. Trong tài liệu được chèn vào, nếu chúng ta không chỉ định tham số _id thì MongoDB sẽ gán một ObjectId duy nhất cho tài liệu này

Trong ngăn điều hướng MongoDB Compass bên trái, nhấp vào cơ sở dữ liệu mà bộ sưu tập đích của bạn thuộc về. Từ chế độ xem cơ sở dữ liệu, nhấp vào tên bộ sưu tập đích. Nhấp vào nút Chèn tài liệu. Đối với mỗi trường trong tài liệu, chọn loại trường và điền vào tên trường và giá trị

Đội. hỏi đáp công việc. Stack Overflow cho Teams là một nơi riêng tư, an toàn để bạn và đồng nghiệp của bạn tìm và chia sẻ thông tin

Nếu tài liệu không chỉ định trường _id thì mongod sẽ thêm trường _id và gán một ObjectId duy nhất cho tài liệu trước khi chèn. Hầu hết các trình điều khiển tạo một ObjectId và chèn trường _id, nhưng mongod sẽ tạo và điền _id nếu trình điều khiển hoặc ứng dụng không

Trong cơ sở dữ liệu MongoDB của chúng tôi, chúng tôi có các bộ sưu tập riêng biệt có tham chiếu đến các bộ sưu tập khác (IE bộ sưu tập hóa đơn của chúng tôi chỉ có tham chiếu ObjectId mà nó được gửi tới ứng dụng khách thay vì giữ nhiều bản sao của ứng dụng khách bên trong hóa đơn)

Chúng tôi đang kết nối với MongoDB từ Microsoft PowerBI bằng Apache Drill và trình điều khiển ODBC của nó. Để thực hiện công việc này, tôi đã tạo một số chế độ xem đơn giản như chế độ xem sau để làm phẳng dữ liệu của tôi để hoạt động với Drill

db. runCommand( {tạo.
    "Ánh xạ bên tín dụng",
    viewOn. "yggdrasilconfiguration",
    đường dẫn. [
    {$thư giãn. '$CreditorsMapping'},
    {$project. {
      _id. 1,
        Id tổ chức. '$OrganizationId',
        PrimaryId. '$CreditorsMapping. PrimaryId',
        ID Bên được chi trả. '$CreditorsMapping. CreditorId',
        ApplicationId. '$CreditorsMapping. ApplicationId'
    },
    {$match. {Id chính. {$ne. ""}}}
]
})

_id, Id tổ chức và Id ứng dụng là ObjectId. Vấn đề là Drill không thể tham gia vào ObjectId's và PowerBI không chấp nhận dữ liệu nhị phân làm tham chiếu, vì vậy tôi không thể tham gia dữ liệu giữa các bộ sưu tập khác nhau. Có thể chuyển đổi ObjectId thành chuỗi, nhưng mọi nỗ lực của tôi đều thất bại

Tôi đã thử những cách tiếp cận này nhưng không có kết quả

db. getCollection('yggdrasilconfiguration'). tổng hợp([
    {$unwind. '$CreditorsMapping'},
    {$project. {
      _id. 0,
        Id tổ chức. '$OrganizationId',
        ToStringedOrganizationId. '$OrganizationId'. toString(),
        StrOrganizationId. '$OrganizationId'. str,
        TojsonOrganizationId. tojson('$OrganizationId'),
        PrimaryId. '$CreditorsMapping. PrimaryId',
        ID Bên được chi trả. '$CreditorsMapping. CreditorId',
        ApplicationId. '$CreditorsMapping. ApplicationId'}
    },
    {$match. {Id chính. {$ne. ""}}}
])

Ở đây tôi sử dụng phương thức toString(),. hậu tố str và phương thức tojson() trên OrganizationId, nhưng kết quả của việc này trông như thế này

{
    "Id tổ chức". ObjectId("542d53fc669a710728349cc8"),
    "ToStringedOrganizationId". ObjectId("542d53fc669a710728349cc8"),
    "StrOrganizationId". không xác định,
    "TojsonOrganizationId". "\"$OrganizationId\"",
    "PrimaryId". "915568",
    "CreditId". "7626",
    "ApplicationId". ObjectId("542e5dca669a7107d8ac1da5")
}

Có thể làm những gì tôi muốn?

Làm cách nào để chuyển đổi UUID thành chuỗi trong MongoDB?

UUID(). toString() sẽ cung cấp một chuỗi chứa UUID("00000000-0000-0000-0000-00000000000"). split('"') sẽ chia chuỗi, chia cho dấu ngoặc kép, thành một mảng, đó là ['UUID(', '00000000-0000-0000-0000-000000000000', ')'].

Làm cách nào để chuyển đổi int thành chuỗi trong MongoDB?

forEach( function(x) { x. tên = x. tên. toNumber(). toString();

Làm cách nào để chuyển đổi ObjectId thành chuỗi trong Python?

ObjectId. toString() trả về biểu diễn chuỗi của đối tượng ObjectId().

Tôi có thể sử dụng ID chuỗi trong MongoDB không?

Có, bạn có thể sử dụng một chuỗi làm _id . Tôi chỉ khuyên dùng nó nếu bạn có một số giá trị (trong tài liệu) tự nhiên là một khóa duy nhất tốt.