파이썬을 사용하여 mongodb에서 커서의 길이를 얻는 방법은 무엇입니까?
MongoDB에서 커서의 길이를 얻을 수 있는 실현 가능한 방법을 찾고 있습니다.
그것은 사실 매우 간단합니다.
len(list(cursor))
그러나 커서는 사용됩니다.
이 방법은 피몬고 3.7 이후로 더 이상 사용되지 않습니다.
권장되는 방법은 수집 방법을 사용하는 것입니다.
이전 답변의 변형:
len(list(cursor.clone()))
커서를 사용하지 않음
cursor.count()
커서로 참조되는 문서 수를 카운트합니다.추가
count()
에 대한 방법.find()
일치하는 문서 수를 반환하는 쿼리입니다.이 작업은 쿼리를 수행하지 않고 쿼리에서 반환되는 결과를 계산합니다.
db.collection.find(<query>).count()
https://docs.mongodb.com/manual/reference/method/db.collection.count/
len(list(cursor.clone()))
나는 정말 잘 작동했고, 편집기를 사용하지 않아서 당신의 변수와 바로 사용할 수 있습니다.
피몬고 문서에 따르면 피몬고 커서는 다음과 같습니다.count
방법:
count(with_limit_and_skip=False)
기본적으로 이 메서드는 다음과 같은 커서의 총 길이를 반환합니다.
cursor.count()
이 메서드를 다음과 같이 호출하면with_limit_and_skip=True
반환된 값은 다음과 같습니다.limit
그리고.skip
계정에 대한 쿼리예를 들어, 다음 쿼리는 5개 이상의 문서가 있다고 가정하여 5개를 반환합니다.
cursor.limit(5).count(True)
다음을 사용합니다.cursor.iter().count()
이 문제를 해결할 수 있는 실현 가능한 방법입니다.
어떤 이유에서인지 일부 집계는 동일한 메서드, 다른 클래스, 단순 솔루션이 없는 개체를 반환하고 유사 커서를 배열로 변환합니다.
// A simple aggregation with `group`
var cursor = db.getCollection('collection').aggregate([
{$match: {
"property": {"$exists": true }
}},
{$group: {
_id: '$groupable',
count: {$sum: 1}
}},
{$sort: {
count: -1
}}
]);
// Converting the "cursor" into an array
var cursor_array = cursor.toArray();
// Looping as an array using `for` instead of `while`
for (var i = 0; i < cursor_array.length; i++) {
print(cursor_array[i]._id+'\t'+cursor_array[i].count);
}
이 솔루션은 셸 전용이므로 다른 라이브러리에 이 배열 방법이 있는지 알 수 없습니다.
저는 이렇게 세어볼 수 있었습니다.
def count():
collection = db[col_name]
count = collection.count_documents({"visited" : True})
return count
어때.sum(1 for _ in cursor.clone())
새 목록을 만드는 대신 일정한 메모리를 사용하여 카운트를 얻습니다.그리고 이 솔루션으로 mongo를 하기 위해 다른 질문을 할 필요가 없습니다.
언급URL : https://stackoverflow.com/questions/35692719/how-to-get-the-length-of-a-cursor-from-mongodb-using-python
'programing' 카테고리의 다른 글
장고 세션 (0) | 2023.05.05 |
---|---|
연결 문자열에서 Trusted_Connection과 Integrated Security의 차이점은 무엇입니까? (0) | 2023.05.05 |
가져오기 문 python3의 변경 사항 (0) | 2023.05.05 |
특정 Git 커밋 보기 (0) | 2023.05.05 |
이클립스에서 빵가루를 비활성화하는 방법 (0) | 2023.05.05 |