[解決済み] mongodb aggregation sort
2022-02-19 06:13:04
質問
私は学生とその連絡先のデータベースを持っています。 私は、最も多くの学生を収容する郵便番号を見つけようとしています。 学生のドキュメントは、次のようになります...
<ブロッククオート{studentcode: 'smi0001', 名字: 'bob', 姓: 'smith', 郵便番号: 2001}
集計フレームワークを使って、学生の多い郵便番号を調べるには、次のようにすればいいと思いました。
db.students.aggregate({$project: { postcode: 1 }, $group: {_id: '$postcode', students: {$sum: 1}}})
これは期待通りに動作します(郵便番号を
_id
で、各郵便番号の生徒数は 'students' となります。
$sort
の結果ではなく、student コレクション全体でソートしようとするようです。
$group
演算を行うことができます。
こんな感じです。
db.students.aggregate({$project: { postcode: 1 }, $group: {_id: '$postcode', students: {$sum: 1}}, $sort: {_id: -1}})
が、コレクション全体を返すので
$project
と
$group
...
何か見落としているのでしょうか?生徒数の降順でソートして、最初の項目を返せばいいと思っていたのですが。
何かありましたら、よろしくお願いします。
どのように解決するのですか?
あと少しだったのに...。
db.test.aggregate(
{$group: {_id: '$postcode', students: {$sum: 1}}},
{$sort: {_id: -1}}
);
を与えます(あなたのサンプルと一致するテストデータを追加しました)。
{
"result" : [
{
"_id" : 2003,
"students" : 3
},
{
"_id" : 2002,
"students" : 1
},
{
"_id" : 2001,
"students" : 2
}
],
"ok" : 1
}
あなたは、外側の
{}
をすべて囲んでしまい、それが混乱の原因となっていました。グループとソートは、パイプラインの中で別々の操作として機能していなかったのです。
この場合、プロジェクトは本当に必要なかったんですね。
更新情報 おそらく、このように "students" でソートして、(人口で)最大の郵便番号を最初に取得したいのでしょう。
db.test.aggregate(
{$group: {_id: '$postcode', students: {$sum: 1}}},
{$sort: {students: -1}}
);
関連
-
[解決済み】MongoDBシェルですべてのコレクションを一覧表示するには?
-
[解決済み] MongoDBと同等ではない
-
[解決済み] 配列フィールドが空でない MongoDB レコードを検索する
-
undefinedエラー: getaddrinfo ENOTFOUND localhost または MongoDB connected disconnected
-
[解決済み] MongoDBに "like "を使ってクエリを実行する方法
-
[解決済み] コマンドラインからMongoDBデータベースを削除する方法を教えてください。
-
[解決済み] mongodbの最後のN個のレコードを取得する方法は?
-
[解決済み] MongoDBのリレーションシップ:埋め込みか参照か?
-
[解決済み] MongoDB データベースのすべてを削除する
-
[解決済み】データベースとしてのNoSQL(MongoDB) vs Lucene(またはSolr)【クローズド
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み] 配列のサイズが1より大きい文書を検索します。
-
[解決済み] HomebrewでMongoDBをインストールする
-
[解決済み] MongoDBでコレクションを削除するには?
-
undefinedエラー: getaddrinfo ENOTFOUND localhost または MongoDB connected disconnected
-
問題が発生しました -----mongodb-------Uncaught TypeError: 未定義のプロパティ 'value' を読み取れませんでした。
-
[解決済み] MongoDB のオブジェクトを部分的に更新して、新しいオブジェクトを既存のオブジェクトにオーバーレイ/マージするにはどうすればよいですか?
-
[解決済み】MongoDBをWindowsサービスとして実行するにはどうすればいいですか?
-
[解決済み】Node.js Mongoose.js の文字列を ObjectId に変換する関数
-
[解決済み】2つの異なるコレクションで重複したMongo ObjectIdが生成される可能性?
-
[解決済み】MongoDBのすべてのドキュメントのフィールド名を変更するにはどうすればよいですか?