В Джанго вы могли бы сделать это с F
, но так как F
не работает с mongoengine использовать where
ме-
query = "this.{last_modified}>this.{post_date}"
db_fields = {
'last_modified': News._fields['last_modified'],
'post_date': News._fields['post_date']
}
results = News.objects.where(query.format(*db_fields))
Согласно mongoengine документации, '$, где' оговорка подставляется автоматически
def where(self, where_clause):
"""Filter ``QuerySet`` results with a ``$where`` clause (a Javascript
expression). Performs automatic field name substitution like
:meth:`mongoengine.queryset.Queryset.exec_js`.
.. note:: When using this mode of query, the database will call your
function, or evaluate your predicate clause, for each object
in the collection.
.. versionadded:: 0.5
"""
OR
Вы могли бы чень MongoDB непосредственно -
query = "this.{last_modified}>this.{post_date}"
db_fields = {
'last_modified': News._fields['last_modified'],
'post_date': News._fields['post_date']
}
collection = News._get_collection()
results = list(collection.find({"$where": query.format(*db_fields)}))
Примечание: - Вы не должны жёстко db_fields имя в ваших Монго запросов.
Вы проверили документацию для двигателя монго? http://docs.mongoengine.org/guide/querying.html#query-operators – theWanderer4865
Попробуйте с 'News.objects (last_modified__gte = F ('post_date'))' – Pynchia
Что такое 'F' здесь? он говорит, что F не определен 'NameError' –