MongoDB Aggregate $ unwind $ match использует дату - что я пропустил

я новичок в MongoDB и яЯ пытаюсь работать с агрегатами. Я частично делаю то, что яищу, но у меня странное поведение с датами.

MongoDB информация

Версия: 2.2.0

Операционная система: Windows 7

Задача

Получить все комментарии, созданные после '2012-11-22'

Позволять'Получим пример:

Данные

db.blogs.save([ {
    title : "X this is my second title",
    author : "max",
    posted : new Date(),
    pageViews : 10,
    tags : [ "good", "nice" ],
    comments : [ {
        "_id" : ObjectId("50ac9fdb53a900bcb4be46d9"),
        author : "john",
        text : "pretty awesome",
        create : ISODate("2012-12-20T00:00:00.000Z")
    }, {
        "_id" : ObjectId("50ac9fd003a900bcb4be46d9"),
        author : "sam",
        text : "this is bad",
        create : ISODate("2012-12-22T00:00:00.000Z")
    } ],
    other : {
        foo : 5
    }
}, {
    title : "X this is my title",
    author : "bob",
    posted : new Date(),
    pageViews : 5,
    tags : [ "fun", "good", "fun" ],
    comments : [ {
        "_id" : ObjectId("50ac55db53a900bcb4be46d9"),
        author : "matthieu",
        text : "bof bof",
        create : ISODate("2012-12-21T00:00:00.000Z")
    }, {
        "_id" : ObjectId("50ac55db53a900bcb4b226d9"),
        author : "sam",
        text : "this s bad",
        create : ISODate("2012-12-22T00:00:00.000Z")
    } ],
    other : {
        foo : 6
    }
}, {
    title : "X NEW ELEMENT",
    author : "emil",
    posted : new Date(),
    pageViews : 33,
    tags : [ "bad", "hehe", "cool", "nice" ],
    comments : [ {
        "_id" : ObjectId("50ac55db531100bcb4b226d9"),
        author : "emilie",
        text : "could be better",
        create : ISODate("2012-12-21T00:00:00.000Z")
    }, {
        "_id" : ObjectId("50ac55db101100bcb4b226d9"),
        author : "samuel",
        text : "maybe a good one",
        create : ISODate("2012-12-20T00:00:00.000Z")
    } ],
    other : {
        foo : 9
    }
}, {
    title : "X Y NEW ELEMENT",
    author : "marc",
    posted : new Date(),
    pageViews : 33,
    tags : [ "bad", "hehe", "cool", "nice" ],
    comments : [ {
        "_id" : ObjectId("50ac55db101100bcb4baa6d9"),
        author : "sam",
        text : "hehe",
        create : ISODate("2012-11-20T00:00:00.000Z")
    }, {
        "_id" : ObjectId("50ac55db101ab0bcb4baa6d9"),
        author : "daniel",
        text : "yeehhhh hoho",
        create : ISODate("2012-11-23T00:00:00.000Z")
    } ],
    other : {
        foo : 9
    }
} ])

Пример 1: ОК с соответствием строк

Вернуть всеКомментарии' от пользователя 'Сэм:

db.blogs.aggregate( [
   { $unwind: "$comments" },
   { $match: { 'comments.author' : "sam" } },
   { $group: { _id: "$comments" } }
] )

Это возвращение только комментарии, где свойство 'автора является 'Сэм'.

Пример 2: проблема с датами?

эта агрегация (для меня) такая же, как предыдущая, но вместо сопоставленияавтораЯ соответствую дате собственностиСоздайте' :

db.blogs.aggregate( [
   { $unwind: "$comments" },
   { $match: { 
    'comments.create' : {
        $gt: ISODate("2012-11-22T00:00:00Z")
    }
   } },
   { $group: { _id: "$comments" } }
] )

Но если вы протестируете эту агрегацию, вы увидите, что некоторые комментарии содержатСоздайте' даты ниже чем2012-11-22', Например, комментарий с идентификатором50ac9fdb53a900bcb4be46d9' возвращается

Я бы ожидал только комментарии с датами больше '2012-11-22'... Я думаю, что-то пропустил ...

Спасибо

Ответы на вопрос(1)

Ваш ответ на вопрос