MongoDBの文字列を数値でソートするにはどうすればいいですか?
MongoDBでは文字列を数値でソートしたい場合は、$sort演算子を使用できます。まず、文字列を数値型に変換してから、$sort演算子で数値をソートします。
以下に例を示します。
- 文字列のセットを作る
db.collection.insertMany([
{ name: "John", age: "25" },
{ name: "Alice", age: "30" },
{ name: "Bob", age: "20" }
]);
- 年齢
db.collection.aggregate([
{ $addFields: { ageNum: { $toInt: "$age" } } },
{ $sort: { ageNum: 1 } }
]);
この例では、$addFields演算子を使用し、ageフィールドから数値型のageNumフィールドを作成します。次に、$sort演算子でageNumフィールドを昇順にソートします。
結果は以下のとおりです。
{ "_id" : ObjectId("5fe7a3a6d0d8b132c9b9a8b2"), "name" : "Bob", "age" : "20", "ageNum" : 20 }
{ "_id" : ObjectId("5fe7a3a6d0d8b132c9b9a8b0"), "name" : "John", "age" : "25", "ageNum" : 25 }
{ "_id" : ObjectId("5fe7a3a6d0d8b132c9b9a8b1"), "name" : "Alice", "age" : "30", "ageNum" : 30 }
ドキュメントは、コレクション内でAgeNum フィールドの値に基づいてソートされるようになりました。