1

私は自分のオークション コレクションでこの種のクエリを試みています。目的は、:item == 2770dump == ObjectId("5104f03a46ab64d404000000") or ObjectId("51067f4946ab644003000000") or ObjectId("5106924e46ab64c81c000000").

{
    item: 2770,
    dump: {
        $all: [
            ObjectId("5104f03a46ab64d404000000"),
            ObjectId("51067f4946ab644003000000"),
            ObjectId("5106924e46ab64c81c000000")
        ]
    }
}

このクエリでは何も返されませんが、これ ($all 演算子に含まれるダンプを使用していることに注意してください) では、ドキュメントのリストが返されます。$all 演算子の振る舞いを無視しているのでしょうか?

{
    item: 2770,
    dump: ObjectId("5106924e46ab64c81c000000")
}

これは、私のオークション コレクションのドキュメントの例です。

{
    _id: ObjectId("5106924e46ab64c81c000237"),
    auc: 1560105766,
    item: 2770,
    owner: "Ozrael",
    bid: 450000,
    buyout: 450000,
    quantity: 20,
    timeLeft: "VERY_LONG",
    dump: ObjectId("5106924e46ab64c81c000000"),
    faction: "horde",
    bidPricePerUnit: 22500,
    buyoutPricePerUnit: 22500
}
4

2 に答える 2

2

ドキュメントに記載されているように、クエリに間違った演算子を使用していました。$allは配列全体に一致します。

指定された値のいずれかを含むドキュメントに一致する正しい演算子は$in です

于 2013-01-29T15:28:58.030 に答える
0

を使用している場合$all、結果セットのすべてのドキュメントには、言及されたすべての値が含まれているはずです。例のドキュメントには、次の構造が含まれている必要があります。

{
    _id: ObjectId("5106924e46ab64c81c000237"),
    auc: 1560105766,
    item: 2770,
    owner: "Ozrael",
    bid: 450000,
    buyout: 450000,
    quantity: 20,
    timeLeft: "VERY_LONG",
    dump: [
            ObjectId("5104f03a46ab64d404000000"),
            ObjectId("51067f4946ab644003000000"),
            ObjectId("5106924e46ab64c81c000000")
          ],
    faction: "horde",
    bidPricePerUnit: 22500,
    buyoutPricePerUnit: 22500
}
于 2013-01-28T15:51:52.193 に答える