2013-09-27 157 views
5

Tôi đang xây dựng truy vấn đường ống tổng hợp với lệnh $substr từ MongoDB nhưng tôi không biết cách biểu diễn mảng mà nó yêu cầu trong Go bằng trình điều khiển mgo vì nó chứa các loại giá trị khác nhau (chuỗi, int).Làm thế nào để đại diện cho một mảng với các loại hỗn hợp

Đây là truy vấn trong javascript:

[ {$group: {"_id": {"dt": {"$substr": ["$dt",0,6]}}}} ] 

Điều này đang cố gắng làm là lấy chuỗi con của dt (từ giai đoạn trước đó của tập hợp) với bắt đầu từ chỉ số 0 và kết thúc chỉ số 6.

Trong Go tôi đã nhận:

[]bson.M{"$group": bson.M{"_id": bson.M{"dt": bson.M{"$substr": ["$dt",0,6]}}}}} 

nhưng ["$dt",0,6] không phải là một đại diện chính xác và tất cả mọi thứ tôi đã cố gắng dường như thất bại.

+0

Nếu dữ liệu bạn nhận được chứa các loại hỗn hợp, tốt hơn là nên triển khai cấu trúc cho nó. Điều này cho phép bạn nhập an toàn và làm cho mã của bạn dễ hiểu hơn cho người khác. – fuz

Trả lời

10

Bạn có thể đại diện cho các giá trị sử dụng một lát loại []interface{}:

l := []interface{}{"$dt", 0, 6} 

Nếu bạn tìm thấy những cú pháp một chút bẩn, bạn có thể dễ dàng xác định một loại địa phương để làm cho nó trông đẹp hơn:

type list []interface{} 
    l := list{"$dt", 0, 6}