9

次のような MongoDB 集計があります。

[
    {
        "$match": [
            {"Created": {"$gte": ISODate("2014-01-10T00:00:00Z")}}
        ]
    },
    {
        "$group":
        {
            "_id": [
                {"year": {"$year": "Created"}},
                {"month": {"$month": "Created"}},
                {"day": {"$dayOfMonth": "Created"}}
            ],
            "count": {"$sum": 1}
        }
    }
]

このクエリを MongoVUE で実行すると、次のエラーが返されます。

パイプラインの構文が正しくありません
パイプラインの各アイテムはドキュメントである必要があります
タイプ: System.Exception
スタック: MangoUI.ComAggregate.kRemove_Click(オブジェクト送信者、EventArgs e)

私は完全に困惑しており、私のグーグルからは、インターネット全体の残りの部分もそうです。date created $match 演算子を追加する前に、クエリは正しく機能していました。エラーが MongoVUE に属し、MongoDB 自体に属していない可能性があります。

スキーマの関連部分は次のようになります。

{
  "_id" : new BinData(3, "m13wFpp9gUi09cRCuG43aw=="),
  "Created" : ISODate("2013-12-19T01:00:20.972Z")
}

このエラーの原因を見つけるのを手伝ってくれる人はいますか? 私は完全に困惑しているのではないかと心配しています。


私は自分の質問に答えることを許可されていません (StackOverflow の評判が低すぎる場合、8 時間以内に自分で答えを見つけることはまったく不可能なので?

わかりました、MongoVUE の実際のバグ (または少なくとも省略と誤解を招くエラー メッセージ) であると判断できる限り、答えを見つけました。この方法で同じクエリを (orid の変更を加えて) 記述すると、次のように動作します。

{
  "$match": {
    "Created": {
      "$gte": ISODate("2014-01-10T00:00:00Z")
    }
  }
},
{
  "$group": {
    "_id": {
      "year": {
        "$year": "$Created"
      },
      "month": {
        "$month": "$Created"
      },
      "day": {
        "$dayOfMonth": "$Created"
      }
    },
    "count": {
      "$sum": 1
    }
  }
}

(私が実際に行った唯一の変更は、その周りの配列マーカーを削除したことに注意してください。)

さらに、MongoVUE の配列に複数の操作を含む集計を配置すると、常にこのエラーが表示されます。アレイをオフのままにしておくと、操作は正常に機能します。追加すると、突然「パイプライン内の各アイテムはドキュメントでなければなりません」というメッセージが表示されます。

4

1 に答える 1