按范围过滤 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]
.
我有一个 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]
.