mongoengine best way to query over a list of embedded documents with inheritance
up vote
0
down vote
favorite
I have a list of embedded documents which I create using inheritance. Therefore, due to inheritance, some fields may not exist across all embedded documents. I have tried the following:
CASE 1: SLOW (run time = 2.1s)
forms = db.Form.objects()
for form in forms:
for element in form.elements:
if hasattr(element, 'parameter'):
if element.parameter == parameter:
print(form)
CASE 2: FAST (run time = 0.00014s)
forms = db.Form.objects(elements__match={ 'parameter': parameter })
CASE 3: DOES NOT WORK!
forms = db.Form.objects(elements__parameter == parameter)
NameError: name 'elements__parameter' is not defined
I would think that CASE 2 and 3 would be identical, however, it seems that the __parameter
does not know how to deal with embedded documents which use inheritance and do not have the 'parameter' field. Is this a bug or am I doing something wrong?
mongoengine flask-mongoengine
add a comment |
up vote
0
down vote
favorite
I have a list of embedded documents which I create using inheritance. Therefore, due to inheritance, some fields may not exist across all embedded documents. I have tried the following:
CASE 1: SLOW (run time = 2.1s)
forms = db.Form.objects()
for form in forms:
for element in form.elements:
if hasattr(element, 'parameter'):
if element.parameter == parameter:
print(form)
CASE 2: FAST (run time = 0.00014s)
forms = db.Form.objects(elements__match={ 'parameter': parameter })
CASE 3: DOES NOT WORK!
forms = db.Form.objects(elements__parameter == parameter)
NameError: name 'elements__parameter' is not defined
I would think that CASE 2 and 3 would be identical, however, it seems that the __parameter
does not know how to deal with embedded documents which use inheritance and do not have the 'parameter' field. Is this a bug or am I doing something wrong?
mongoengine flask-mongoengine
add a comment |
up vote
0
down vote
favorite
up vote
0
down vote
favorite
I have a list of embedded documents which I create using inheritance. Therefore, due to inheritance, some fields may not exist across all embedded documents. I have tried the following:
CASE 1: SLOW (run time = 2.1s)
forms = db.Form.objects()
for form in forms:
for element in form.elements:
if hasattr(element, 'parameter'):
if element.parameter == parameter:
print(form)
CASE 2: FAST (run time = 0.00014s)
forms = db.Form.objects(elements__match={ 'parameter': parameter })
CASE 3: DOES NOT WORK!
forms = db.Form.objects(elements__parameter == parameter)
NameError: name 'elements__parameter' is not defined
I would think that CASE 2 and 3 would be identical, however, it seems that the __parameter
does not know how to deal with embedded documents which use inheritance and do not have the 'parameter' field. Is this a bug or am I doing something wrong?
mongoengine flask-mongoengine
I have a list of embedded documents which I create using inheritance. Therefore, due to inheritance, some fields may not exist across all embedded documents. I have tried the following:
CASE 1: SLOW (run time = 2.1s)
forms = db.Form.objects()
for form in forms:
for element in form.elements:
if hasattr(element, 'parameter'):
if element.parameter == parameter:
print(form)
CASE 2: FAST (run time = 0.00014s)
forms = db.Form.objects(elements__match={ 'parameter': parameter })
CASE 3: DOES NOT WORK!
forms = db.Form.objects(elements__parameter == parameter)
NameError: name 'elements__parameter' is not defined
I would think that CASE 2 and 3 would be identical, however, it seems that the __parameter
does not know how to deal with embedded documents which use inheritance and do not have the 'parameter' field. Is this a bug or am I doing something wrong?
mongoengine flask-mongoengine
mongoengine flask-mongoengine
edited Nov 9 at 22:20
asked Nov 9 at 21:53
spitz
336316
336316
add a comment |
add a comment |
active
oldest
votes
active
oldest
votes
active
oldest
votes
active
oldest
votes
active
oldest
votes
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
StackExchange.ready(
function () {
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f53233715%2fmongoengine-best-way-to-query-over-a-list-of-embedded-documents-with-inheritance%23new-answer', 'question_page');
}
);
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown