MongoDBの文字列を数値でソートするにはどうすればいいですか?

MongoDBでは文字列を数値でソートしたい場合は、$sort演算子を使用できます。まず、文字列を数値型に変換してから、$sort演算子で数値をソートします。

以下に例を示します。

  1. 文字列のセットを作る
db.collection.insertMany([
  { name: "John", age: "25" },
  { name: "Alice", age: "30" },
  { name: "Bob", age: "20" }
]);
  1. 年齢
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 フィールドの値に基づいてソートされるようになりました。

bannerAds