Use Queryset._query instead of Cursor.__spec for count()
This commit is contained in:
parent
aa3ff39ef8
commit
c28bb517cb
@ -7,6 +7,7 @@ Development
|
|||||||
===========
|
===========
|
||||||
- (Fill this out as you fix issues and develop your features).
|
- (Fill this out as you fix issues and develop your features).
|
||||||
- Fix LazyReferenceField dereferencing in embedded documents #2426
|
- Fix LazyReferenceField dereferencing in embedded documents #2426
|
||||||
|
- Fix regarding the recent use of Cursor.__spec in .count() that was interfering with mongomock #2425
|
||||||
|
|
||||||
Changes in 0.21.0
|
Changes in 0.21.0
|
||||||
=================
|
=================
|
||||||
|
@ -420,7 +420,7 @@ class BaseQuerySet:
|
|||||||
|
|
||||||
count = count_documents(
|
count = count_documents(
|
||||||
collection=self._cursor.collection,
|
collection=self._cursor.collection,
|
||||||
filter=self._cursor._Cursor__spec,
|
filter=self._query,
|
||||||
**kwargs,
|
**kwargs,
|
||||||
)
|
)
|
||||||
|
|
||||||
|
@ -2900,50 +2900,32 @@ class TestDocumentInstance(MongoDBTestCase):
|
|||||||
# Checks
|
# Checks
|
||||||
assert ",".join([str(b) for b in Book.objects.all()]) == "1,2,3,4,5,6,7,8,9"
|
assert ",".join([str(b) for b in Book.objects.all()]) == "1,2,3,4,5,6,7,8,9"
|
||||||
# bob related books
|
# bob related books
|
||||||
assert (
|
bob_books_qs = Book.objects.filter(
|
||||||
",".join(
|
Q(extra__a=bob) | Q(author=bob) | Q(extra__b=bob)
|
||||||
[
|
|
||||||
str(b)
|
|
||||||
for b in Book.objects.filter(
|
|
||||||
Q(extra__a=bob) | Q(author=bob) | Q(extra__b=bob)
|
|
||||||
)
|
|
||||||
]
|
|
||||||
)
|
|
||||||
== "1,2,3,4"
|
|
||||||
)
|
)
|
||||||
|
assert [str(b) for b in bob_books_qs] == ["1", "2", "3", "4"]
|
||||||
|
assert bob_books_qs.count() == 4
|
||||||
|
|
||||||
# Susan & Karl related books
|
# Susan & Karl related books
|
||||||
assert (
|
susan_karl_books_qs = Book.objects.filter(
|
||||||
",".join(
|
Q(extra__a__all=[karl, susan])
|
||||||
[
|
| Q(author__all=[karl, susan])
|
||||||
str(b)
|
| Q(extra__b__all=[karl.to_dbref(), susan.to_dbref()])
|
||||||
for b in Book.objects.filter(
|
|
||||||
Q(extra__a__all=[karl, susan])
|
|
||||||
| Q(author__all=[karl, susan])
|
|
||||||
| Q(extra__b__all=[karl.to_dbref(), susan.to_dbref()])
|
|
||||||
)
|
|
||||||
]
|
|
||||||
)
|
|
||||||
== "1"
|
|
||||||
)
|
)
|
||||||
|
assert [str(b) for b in susan_karl_books_qs] == ["1"]
|
||||||
|
assert susan_karl_books_qs.count() == 1
|
||||||
|
|
||||||
# $Where
|
# $Where
|
||||||
assert (
|
custom_qs = Book.objects.filter(
|
||||||
",".join(
|
__raw__={
|
||||||
[
|
"$where": """
|
||||||
str(b)
|
|
||||||
for b in Book.objects.filter(
|
|
||||||
__raw__={
|
|
||||||
"$where": """
|
|
||||||
function(){
|
function(){
|
||||||
return this.name == '1' ||
|
return this.name == '1' ||
|
||||||
this.name == '2';}"""
|
this.name == '2';}"""
|
||||||
}
|
}
|
||||||
)
|
|
||||||
]
|
|
||||||
)
|
|
||||||
== "1,2"
|
|
||||||
)
|
)
|
||||||
|
assert [str(b) for b in custom_qs] == ["1", "2"]
|
||||||
|
assert custom_qs.count() == 2
|
||||||
|
|
||||||
def test_switch_db_instance(self):
|
def test_switch_db_instance(self):
|
||||||
register_connection("testdb-1", "mongoenginetest2")
|
register_connection("testdb-1", "mongoenginetest2")
|
||||||
|
@ -104,18 +104,17 @@ class TestTransform(unittest.TestCase):
|
|||||||
post = BlogPost(**data)
|
post = BlogPost(**data)
|
||||||
post.save()
|
post.save()
|
||||||
|
|
||||||
assert "postTitle" in BlogPost.objects(title=data["title"])._query
|
qs = BlogPost.objects(title=data["title"])
|
||||||
assert not ("title" in BlogPost.objects(title=data["title"])._query)
|
assert qs._query == {"postTitle": data["title"]}
|
||||||
assert BlogPost.objects(title=data["title"]).count() == 1
|
assert qs.count() == 1
|
||||||
|
|
||||||
assert "_id" in BlogPost.objects(pk=post.id)._query
|
qs = BlogPost.objects(pk=post.id)
|
||||||
assert BlogPost.objects(pk=post.id).count() == 1
|
assert qs._query == {"_id": post.id}
|
||||||
|
assert qs.count() == 1
|
||||||
|
|
||||||
assert (
|
qs = BlogPost.objects(comments__content="test")
|
||||||
"postComments.commentContent"
|
assert qs._query == {"postComments.commentContent": "test"}
|
||||||
in BlogPost.objects(comments__content="test")._query
|
assert qs.count() == 1
|
||||||
)
|
|
||||||
assert BlogPost.objects(comments__content="test").count() == 1
|
|
||||||
|
|
||||||
BlogPost.drop_collection()
|
BlogPost.drop_collection()
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user