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

Aggregation Frameworks mongoで投影順にフィールドを取得することは可能ですか?

    MongoDBはデフォルトで、挿入順にフィールドを返します。

    例:

    db.students.aggregate([  { "$project": {  "midterm": 1,"final": 1   } } ])
    

    戻ります

    { "_id" : 3, "final" : 78, "midterm" : 70 }
    { "_id" : 2, "midterm" : 60, "final" : 55 }
    { "_id" : 1, "midterm" : 70 }
    

    2番目のレコードを見るとわかるように、フィールドは挿入した順になっています。ただし、フィールドの名前を変更することで、必要な順序でフィールドを取得するためのトリックを実行できます。

    例:

    db.students.aggregate([  { "$project": {  _midterm:"$midterm","_final": "$final"}}])
    

    上記のクエリは

    を返します
    { "_id" : 3, "_midterm" : 70, "_final" : 78 }
    { "_id" : 2, "_midterm" : 60, "_final" : 55 }
    { "_id" : 1, "_midterm" : 70 }
    

    ここでは、1つの例外を除いて、中間が最初で、最終が2番目です。フィールド名の前には_が付いています 。元の名前が必要な場合は、projectできます もう一度。

    db.students.aggregate(
    [
    { "$project": {  _midterm:"$midterm","_final": "$final"}},
    { "$project": {  midterm:"$_midterm","final": "$_final"}}
    ])
    

    そしてそれは戻ります

    { "_id" : 3, "midterm" : 70, "final" : 78 }
    { "_id" : 2, "midterm" : 60, "final" : 55 }
    { "_id" : 1, "midterm" : 70 }
    


    1. Mongodb Mongoimportが大きすぎます:解析エラーの失敗

    2. タイプされたトランザクションをRedis

    3. MongoDBで全文検索を行う方法

    4. Apache HBase I / O – HFile