Nếu bạn tạo Bộ sưu tập sao băng bằng new Mongo.Collection('col')
bạn nhận lại một phiên bản Minimongo không phải là Node MongoDriver gốc, phải không?
Vì vậy, một số phương pháp không hoạt động hoặc không được hỗ trợ đầy đủ .. như collection.aggregate
Nhưng bạn có thể dễ dàng truy cập trình điều khiển gốc thông qua Col.rawCollection()
và thực hiện truy vấn của bạn trực tiếp trên phiên bản gốc. Tất nhiên chỉ có thể truy cập phiên bản gốc trên máy chủ .
Vì vậy, để làm những gì bạn muốn, bạn có một số cách, chẳng hạn như trước tiên bạn có thể lấy mảng, sử dụng nó theo cách bạn muốn và
$set: {my_array: sortedArray }
Cá nhân tôi thích cách này hơn vì bạn chỉ cần thực hiện một thao tác cập nhật thay vì hai ($pull
&$push at $position
)
Nhưng nếu bạn muốn thực hiện theo cách $ push tại $ position .. chỉ cần thực hiện với trình điều khiển gốc
var col = Collection.rawCollection();
var result = Meteor.wrapAsync(col.update.bind(col)(
/* update query goes here */
);
Lưu ý:Bạn cần Meteor.wrapAsync vì phong cách đồng bộ hóa Meteor, bạn cũng có thể thực hiện mà không cần đến nó. Collection.rawCollection (). update (...)