在 mongodb 中查询对象内的嵌套文档
Query nested documents inside an object in mongodb
我开发了一个 Python-Flask 应用程序,使用 Mongoengine 和 mongodb 作为我的数据库。
我想查询我的数据库并获取具有 'user'.
角色的所有用户的所有票证
这是我的票证和用户数据库模式:
class TicketReply(EmbeddedDocument):
content = StringField(required=True, max_length=2000)
date = ComplexDateTimeField(required=True)
user = StringField(required=True, max_length=30)
fileAttached = StringField(max_length=500)
class Ticket(EmbeddedDocument):
subject = StringField(required=True, max_length=200)
content = StringField(required=True, max_length=2000)
department = StringField(required=True, max_length=20)
status = StringField(required=True, max_length=20)
createdDate = ComplexDateTimeField(required=True)
fileAttached = StringField(max_length=500)
id = StringField(max_length=500, required=True)
replies = EmbeddedDocumentListField(TicketReply)
class Users(UserMixin, Document):
fullName = StringField(required=True, max_length=200)
email = EmailField(required=True, unique=True)
phone = StringField(required=True, max_length=11, min_length=11, unique=True)
password = StringField(required=True, max_length=500)
registerDate = ComplexDateTimeField(required=True)
role = StringField(required=True, max_length=20)
tickets = EmbeddedDocumentListField(Ticket)
这是我获得特定用户票的方式:
user = Users.objects(email=current_user.email).first()
getTickets = user.tickets
但我不知道如何获取角色为 'users' 的所有用户的所有票证。
任何帮助表示赞赏。
如果我没理解错的话,您想要所有具有特定角色的用户的所有门票。
由于工单嵌套(通过使用 EmbeddedDocument)在用户文档中,一种方法是:
admin_tickets = []
for user in User.objects(role='admin'):
admin_tickets += user.tickets
或者如果你想提高一点性能并且不需要用户信息,你可以使用 scalar
:
admin_tickets = []
for user_tickets in User.objects(role='admin').scalar('tickets'):
admin_tickets += user_tickets
我开发了一个 Python-Flask 应用程序,使用 Mongoengine 和 mongodb 作为我的数据库。
我想查询我的数据库并获取具有 'user'.
角色的所有用户的所有票证
这是我的票证和用户数据库模式:
class TicketReply(EmbeddedDocument):
content = StringField(required=True, max_length=2000)
date = ComplexDateTimeField(required=True)
user = StringField(required=True, max_length=30)
fileAttached = StringField(max_length=500)
class Ticket(EmbeddedDocument):
subject = StringField(required=True, max_length=200)
content = StringField(required=True, max_length=2000)
department = StringField(required=True, max_length=20)
status = StringField(required=True, max_length=20)
createdDate = ComplexDateTimeField(required=True)
fileAttached = StringField(max_length=500)
id = StringField(max_length=500, required=True)
replies = EmbeddedDocumentListField(TicketReply)
class Users(UserMixin, Document):
fullName = StringField(required=True, max_length=200)
email = EmailField(required=True, unique=True)
phone = StringField(required=True, max_length=11, min_length=11, unique=True)
password = StringField(required=True, max_length=500)
registerDate = ComplexDateTimeField(required=True)
role = StringField(required=True, max_length=20)
tickets = EmbeddedDocumentListField(Ticket)
这是我获得特定用户票的方式:
user = Users.objects(email=current_user.email).first()
getTickets = user.tickets
但我不知道如何获取角色为 'users' 的所有用户的所有票证。
任何帮助表示赞赏。
如果我没理解错的话,您想要所有具有特定角色的用户的所有门票。 由于工单嵌套(通过使用 EmbeddedDocument)在用户文档中,一种方法是:
admin_tickets = []
for user in User.objects(role='admin'):
admin_tickets += user.tickets
或者如果你想提高一点性能并且不需要用户信息,你可以使用 scalar
:
admin_tickets = []
for user_tickets in User.objects(role='admin').scalar('tickets'):
admin_tickets += user_tickets