web-dev-qa-db-ja.com

ネストされたオブジェクト値によるMongoDBの並べ替え

ネストされたオブジェクトの値に基づいて結果を並べ替えようとしています。 node-mongodb-nativeを使用して、私はこれを行っています:

    this.collection.find({
          "_id": ObjectID(item_id) }, 
        { "items": 1 },
        { sort : { items.date : 1 }
    }, function(err, result) {
        if (err) {
            callback(err);
        } else {
            callback(null, result);
        }
    });

items.dateで予期しないトークンエラーが発生します。

itemsはオブジェクトの配列です。空の配列であるドキュメントもあれば、dateフィールドを含むデータを含むドキュメントもあります。

ありがとうございました!

24
dzm

ドット表記を使用する場合は、キー値を引用符で囲む必要があるため、代わりにsortオブジェクトは次のようになります。

sort: {
    "items.date" : 1
}

これにより、各ドキュメントのdate配列の最小items値で昇順で並べ替えられます

42
JohnnyHK