6
我正在建造一個使用瓶框架和mongoengine的餐館預訂網站。mongoengine參考字段查詢
我的主要目標是當我嘗試觸發此查詢JSON給我一個錯誤,以獲取所有保留的對象,其客戶的ID等於想要的客戶ID使用JSON
data = rzv.objects(restaurant=rest, customer=cdb.objects.get(id=request.args.get("customer-reservation"))).all()
:
mongoengine.errors.InvalidQueryError
我的預訂型號如下:
class Reservations(document.Document):
restaurant = fields.ReferenceField(Restaurant)
customer = fields.ReferenceField(Customers)
shift_type = fields.EmbeddedDocumentField(Shifts)
room = fields.ReferenceField(Rooms)
time = fields.StringField()
covers = fields.IntField()
status = fields.StringField(default="wait")
desk = fields.EmbeddedDocumentField(Desks)
date = fields.DateTimeField()
sit_date = fields.DateTimeField()
end_sit_date = fields.DateTimeField()
cancel_date = fields.DateTimeField()
我的客戶model:
class Customers(document.Document):
title = fields.StringField()
full_name = fields.StringField()
first_name = fields.StringField()
last_name = fields.StringField()
telephone = fields.StringField()
visits = fields.StringField()
JSON:
$.getJSON("?customer-reservation=" + $(this).attr("data-id"), function (data) {
console.log(data);
reservationFill(data);
});
最後認爲:
if request.args.get("customer-reservation"):
data = rzv.objects(restaurant=rest, customer=cdb.objects.get(id=request.args.get("customer-reservation"))).all()
return data
什麼是查詢這種情況下,正確的方式。我必須使用過濾器嗎?
這會不會是一個性能瓶頸?這看起來像我們需要查詢(然後返回)客戶的所有字段,然後查詢(並返回)所有數據字段。 – benjaminz
對數據庫的多次調用,您應該總是通過僅投影所需字段來最小化傳輸的數據量。您還可以限制返回的數據,以進一步降低網絡成本。這取決於您的業務邏輯和要求。至於成爲瓶頸 - 這取決於整個堆棧 – Ross