복붙노트

[MONGODB] MongoDB를는 : 배열의 항목 수를 카운트

MONGODB

MongoDB를는 : 배열의 항목 수를 카운트

나는 컬렉션의 모든 문서가 포함 된 문서의 집합을 포함하는 배열 foo라는이있는 컬렉션이 있습니다. 현재 foo는 내 얼마나 많은 경우 계산하는 MongoDB의 쉘에서 사소한 방법이 있습니까? 뭔가 같은 :

db.my_collection.food.count () 또는 db.my_collection.food.size ()?

배열의 요구에 각 문서는 고유 foo_id을하고 나는 확실히 요소의 적절한 양의 컬렉션에서 임의의 문서 배열의 내부에 있는지 확인하는 빠른 카운트를하고 싶어.

해결법

  1. ==============================

    1.MongoDB를 2.6에서 집계 프레임 워크는 당신이 사용할 수있는 새로운 배열 $ 크기 연산자가 있습니다 :

    MongoDB를 2.6에서 집계 프레임 워크는 당신이 사용할 수있는 새로운 배열 $ 크기 연산자가 있습니다 :

    > db.mycollection.insert({'foo':[1,2,3,4]})
    > db.mycollection.insert({'foo':[5,6,7]})
    
    > db.mycollection.aggregate({$project: { count: { $size:"$foo" }}})
    { "_id" : ObjectId("5314b5c360477752b449eedf"), "count" : 4 }
    { "_id" : ObjectId("5314b5c860477752b449eee0"), "count" : 3 }
    
  2. ==============================

    2.당신이 몽고의 최신 버전 (2.2 이상)에있는 경우에는 통합 프레임 워크를 사용할 수 있습니다.

    당신이 몽고의 최신 버전 (2.2 이상)에있는 경우에는 통합 프레임 워크를 사용할 수 있습니다.

    db.mycollection.aggregate([
      {$unwind: '$foo'},
      {$group: {_id: '$_id', 'sum': { $sum: 1}}},
      {$group: {_id: null, total_sum: {'$sum': '$sum'}}}
    ])
    

    이는 당신에게 컬렉션의 총, FOOS를 제공 할 것입니다.

    마지막 그룹을 생략하면 레코드 당 결과를 집계합니다.

  3. from https://stackoverflow.com/questions/21387969/mongodb-count-the-number-of-items-in-an-array by cc-by-sa and MIT license