После того, как я недавно столкнулся с той же проблемой, я придумал следующее решение:
Сначала найдите все ItemTags, где tagName либо «смешно», либо «политика» и возвращает массив ItemTag _ids.
Затем найдите элементы, которые содержат все ItemTag _ids в массиве тегов
ItemTag
.find({ tagName : { $in : ['funny','politics'] } })
.lean()
.distinct('_id')
.exec((err, itemTagIds) => {
if (err) { console.error(err); }
Item.find({ tag: { $all: itemTagIds} }, (err, items) => {
console.log(items); // Items filtered by tagName
});
});
str
не является зарезервированным словом, это обычная функция, которая встраивается. True
и False
являются ключевыми словами (начиная с Python 3).
Полный список ключевых слов Python 3 приведен в справочнике по языку :
False await else import pass
None break except in raise
True class finally is return
and continue for lambda try
as def from nonlocal while
assert del global not with
async elif if or yield
вы всегда можете получить доступ к встроенным функциям через их пакет
import builtins
str = 9
print(builtins.str(str))
>>> '9'
str(9)
>>>TypeError: 'int' object is not callable
, в котором говорится, что не рекомендуется переписывать встроенные функции - это может быть очень запутанным для разработчика, который работает с кодом после того, как вы [ 112]