Xem xét dữ liệu sau:
db.col.save({ a: "111"})
db.col.save({ a: "112"})
db.col.save({ a: "113"})
db.col.save({ a: "114"})
bạn có thể sử dụng $ match
của Aggregation Framework để lọc ra tất cả các mục không có trong mảng được chỉ định và $ addFields
với $ indexOfArray
để lấy index
tài sản. Sau đó, bạn có thể $ sort
theo thuộc tính đó và sử dụng $ project
để xóa trường tạm thời. Hãy thử:
db.col.aggregate([
{
$match: { a: { $in: ["112", "111", "113"] } }
},
{
$addFields: {
index: { $indexOfArray: [ ["112", "111", "113"], "$a" ] }
}
},
{
$sort: { index: 1 }
},
{
$project: { index: 0, _id: 0 }
}
])
Kết quả đầu ra:
{ "a" : "112" }
{ "a" : "111" }
{ "a" : "113" }