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

配列の長さによるMongoの順序

    $sizeが使えるかもしれないと思いました 、ただし、それは特定のサイズの配列を見つけるためだけであり、順序付けではありません。

    mongoドキュメントから:http://www.mongodb.org/display/DOCS/Advanced+Queries#AdvancedQueries-%24size

    $ sizeを使用してサイズの範囲を検索することはできません(例:複数の要素を持つ配列)。範囲を照会する必要がある場合は、要素を追加するときに増分する追加のサイズフィールドを作成します。クエリの$size部分にインデックスを使用することはできませんが、他のクエリ式が含まれている場合は、インデックスを使用してクエリ式のその部分の一致を検索できます。

    新しい集計フレームワークである編集:を使用すると、おそらくこれをかなり簡単に実行できるようです。 まだリリースされていません。http://www.mongodb.org/display/DOCS/Aggregation+Framework

    更新 これで、集約フレームワークがリリースされました...

    > db.test.aggregate([
      {$unwind: "$answers"}, 
      {$group: {_id:"$_id", answers: {$push:"$answers"}, size: {$sum:1}}}, 
      {$sort:{size:1}}]);
    {
    "result" : [
        {
            "_id" : ObjectId("5053b4547d820880c3469365"),
            "answers" : [
                {
                    "content" : "answer1"
                },
                {
                    "content" : "2nd answer"
                }
            ],
            "size" : 2
        },
        {
            "_id" : ObjectId("5053b46d7d820880c3469366"),
            "answers" : [
                {
                    "content" : "answer1"
                },
                {
                    "content" : "2nd answer"
                },
                {
                    "content" : "The third answer"
                }
            ],
            "size" : 3
        }
      ],
      "ok" : 1
    }
    


    1. Redisは順不同で挿入しますか、それとも奇妙に並べ替えますか?

    2. 文字列としてMongoからBinDataUUIDを取得します

    3. MongoDBインデックスを理解する

    4. Redis/プレフィックス付きのredisからすべてのキーと値を取得