5

次の構造でドキュメントを検索するための最も実行可能な方法が必要です。

{ _id:"",
var1: number,
var2: number,
var3: number,
}

SQLの方法では、必要な結果セットはこれら3つのUNIONになります(var1でソートされたnレコード、var2でソートされたnレコード、var3でソートされたnレコード)

UNIONを使用すると、重複が削除されることを期待しています。

mongodbを初めて使用するため、このような操作のクエリを作成する正しい方法を見つけることができません。mongodbでそれが可能であるに違いないと思います。

それが不可能な場合は、別のnosqlソリューションを提案してください。

4

1 に答える 1

7

探しているものに最も近い MongoDB 演算子は ですが、これは 2 つの個別のクエリを 1 つの結果に結合するSQL UNION$orとはまったく同じではありません。MongoDB クエリは常に 1 つのコレクションに対して実行されますが、複数のクエリ句を使用できます。$or

例えば:

db.collection.find(
    // Find documents matching any of these values
    {$or:[
        {var1: 123},
        {var2: 456},
        {var3: 789}
    ]}
).sort(
    // Sort in ascending order
    {var1:1, var2:1, var3:1}
)

クエリは 1 つのコレクションに限定されているため、結果はドキュメント レベルで既に重複排除されており、指定されている場合はすべての結果で同じ並べ替え順序が共有されます。

MongoDB で UNION (または複数のコレクション/クエリを操作するその他の操作) をシミュレートする場合は、複数のクエリを記述し、アプリケーション コードで結果セットをマージする必要があります。

于 2013-02-18T02:32:35.537 に答える