3

次の文書は、ミルハウスとバートの会話を記録しています。一意の操作で正しい番号 (例の次は 3) の新しいメッセージを挿入したいと思います。それは可能ですか?

    {   user_a:"Bart",
        user_b:"Milhouse",
        conversation:{
            last_msg:2,
            messages:[
                {   from:"Bart",
                    msg:"Hello"
                    num:1
                },
                {   from:"Milhouse",
                    msg:"Wanna go out ?"
                    num:2
                }
            ]
        }
     }
4

3 に答える 3

1

MongoDB では、配列はその順序を保持するため、num属性を追加することで、フィールドを追加せずに達成できるデータを作成するだけです。同じことを達成するには、配列内の位置を使用するだけです。配列内の X メッセージを取得すると、 を検索するよりも高速に検索できます{ num: X }

順序を維持するために、新しいサブドキュメントを挿入してインクリメントする前にonを実行するnum以外に、カテゴリを追加する簡単な方法はないと思います。find()conversation.last_msglast_msg

順序を維持する必要があるものに応じて、サブドキュメントにタイム スタンプを含めることを検討することもできます。タイム スタンプは、とにかく会話の記録に一般的に保持され、他の有用な情報を提供する可能性があります。

また、私はそれを使用していませんが、必要なことを実行できる場合と実行できない場合がある Mongoose プラグインがあります: https://npmjs.org/package/mongoose-auto-increment

于 2013-11-06T18:06:36.543 に答える
0

自動増分フィールドを作成することはできませんが、関数を使用してシーケンスを生成および管理できます: http://docs.mongodb.org/manual/tutorial/create-an-auto-incrementing-field/ </p>

于 2013-11-09T06:48:57.340 に答える