sql >> データベース >  >> NoSQL >> MongoDB

マングースは入力されたフィールドで並べ替えます

    Mongoose APIは、入力されたフィールドでの並べ替えをサポートしているようですが、それを完全に壊すバグがあります: https://github.com/Automattic/mongoose/issues/2202 。結果は得られますが、それはまったく間違っています。

    少量のデータの場合は、Javascript Array.prototype.sort() 。ただし、これにより、ソートされた配列が直接変更されることに注意してください。

    この場合、私が行ったことは、ソートするモデルのスキーマにソートキープロパティを追加することです。たとえば、次のことができます。

    var FollowActionSchema = new Schema({
      // ...
      'brandSortKey': { type: String },
      'brand': {
        type: ObjectId,
        ref: 'Brand'
      },
      // ...
    });
    

    自分で正しいキーを使用してこのプロパティを明示的に設定する必要があるため、これは完全ではありません:

    var FollowAction = Model('FollowAction', FollowActionSchema);
    
    var aBrand = // some brand object
    
    var f = new FollowAction({
       brand: aBrand._id,
       brandSortKey: aBrand.name
       // other properties
    }); 
    

    ただし、Mongoose API(またはMongoDB)を介して直接並べ替えることができます:

    FollowAction.find({})
       .sort({ brandSortKey:1 })
       .exec(function (err, sortedResults) {
           // do something with sorted results.
       });
    


    1. docker、mongorestore-エラー:ルートディレクトリは単一のデータベースのダンプである必要があります

    2. mongodbでダンプを復元すると失敗する

    3. MongoDBの公式C#ドライバーを使用したビット単位の列挙(フラグ)クエリ

    4. 配列に埋め込まれたドキュメントを返すMongodbselectフィールド