按范围过滤 Mongo 个嵌入文档

Filter within Mongo embedded document by range

我有一个 mongo 集合,如下所示:

{
    '_id': '...',
    'friends': {
        'id1': {'name': 'john', 'dateAdded': ISODate(...)},
        'id2': {'name': 'joe', 'dateAdded': ISODate(...)},
         ...
    }
}

我想通过 friends 属性 dateAdded 过滤集合,而不 改变集合模型。

是否有运算符可以在嵌入式文档字典中进行过滤?

查询将如下所示:

self.collection.find({
    'friends.$operator.dateAdded': {
        '$gte': datetime.datetime(2000, 1, 1),
        '$lte': datetime.datetime(2001, 9, 1)
    }
})

没有接线员可以执行您的要求。用(非常)简单的术语来说,将 MongoDB 视为 key/value 商店;您需要知道密钥才能确定值。

如果您可以选择重构您的模式,使 friends 成为一个数组并丢失 id。一般来说,具有 arbitrary-named 键的设计很糟糕,例如 id[n].