programing

파이썬을 사용하여 mongodb에서 커서의 길이를 얻는 방법은 무엇입니까?

testmans 2023. 5. 5. 08:44
반응형

파이썬을 사용하여 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

반응형