내가 작업해온 MongoDB를 설명하는 "스키마"(quelle horreur)를 준비 중입니다.모든 키에 걸친 고유 Mongo DB 값의 계수, 계수
모든 키 목록을 만들고 각 키의 적용 범위를 표시하는 데 우수 variety.js을 사용했습니다. 그러나 키에 해당하는 값의 값이 작은 경우 전체 집합을 "사용 가능한 값"으로 나열 할 수 있어야합니다. R에서는 범주 형 변수, 즉 성별 : [ "M", "F"]의 "요인"으로 생각할 것입니다.
나는 R + RMongo를 사용하여 각 변수를 쿼리 할 수 있으며 기본적으로 히스토그램을 만들 때와 동일한 절차를 수행하지만 적절한 Mongo.query()/javascript/Map을 알고 싶습니다. 이것에 접근하는 방법을 줄입니다. 나는 db.collection.aggregate() 함수가 정확히 이것을 위해 설계되었다는 것을 이해합니다.
이 요청하기 전에, 나는 참조 :
- http://docs.mongodb.org/manual/reference/aggregation/
- http://docs.mongodb.org/manual/reference/method/db.collection.distinct/
- How to query for distinct results in mongodb with python?
- Get a list of all unique tags in mongodb
- http://cookbook.mongodb.org/patterns/count_tags/
니어 파이프 라인 주문을 제대로받을 수 없습니다. 나는이 같은 문서가 경우에 따라서, 예를 들면 : 카운트로,
{"key1" : ["value1", "value2"]}
{"key2" : ["value3"]}
또는 더 나은 :
{_id : 1, "key1" : "value1", "key2": "value3"}
{_id : 2, "key1" : "value2", "key2": "value3"}
을 내가 좋아하는 뭔가를 반환하고 싶습니다
{"key1" : ["value1" : 1, "value2" : 1]}
{"key2" : ["value3" : 2]}
내가 인식 이를 수행 할 때의 한 가지 문제점은 광범위한 값 (예 : 텍스트 필드 또는 연속 변수)을 갖는 값입니다. 이상적으로, 가능한 다른 값이 x보다 많으면 잘라내는 것이 좋으며 20 개 이상의 고유 한 값을 사용하지 않는 것이 좋습니다. 실제로 더 많은 것이 발견되면 해당 변수를 직접 쿼리합니다.
db.collection.aggregate(
{$limit: 20,
$group: {
_id: "$??varname",
count: {$sum: 1}
}})
첫째, 어떻게? varname에 참조 할 수 있습니다
: 같은이 뭔가인가? 각 열쇠의 이름은? 나는 95 그 % 있었다이 링크를 보았다와 Binning and tabulate (unique/count) in Mongo...을
input data:
{ "_id" : 1, "age" : 22.34, "gender" : "f" }
{ "_id" : 2, "age" : 23.9, "gender" : "f" }
{ "_id" : 3, "age" : 27.4, "gender" : "f" }
{ "_id" : 4, "age" : 26.9, "gender" : "m" }
{ "_id" : 5, "age" : 26, "gender" : "m" }
이 스크립트 :
db.collection.aggregate(
{$project: {gender:1}},
{$group: {
_id: "$gender",
count: {$sum: 1}
}})
가 생산 :
{"result" :
[
{"_id" : "m", "count" : 2},
{"_id" : "f", "count" : 3}
],
"ok" : 1
}
하지만 이해할 수없는 것은 어떻게 잠재적으로 많은 수의 반환 값을 가진 알 수없는 숫자/이름의 키에 대해 일반적으로이 작업을 수행 할 수 있습니까? 이 샘플은 키 이름이 성 (gender)이고 응답 세트가 작음 (2 값)임을 알고 있습니다.
{ "value1", "value2"}}}은 (는) 유효한 JSON이 아닙니다. 모든 배열에는 이름이 있어야합니다. 이 코드에서 key1은 이름이없는 배열을 포함하는 Object의 이름입니다. 가장 올바른 방법은 배열에 이름을 지정하는 것입니다. { "key1": {anArray : [ "value1", "value2"]}} –
그래, 한 단계 중첩을 제거했습니다. 감사. – Mittenchops
모든 필드가 최상위 단순 필드라고 가정합니까? 배열이나 내장 된 json 문서에 대해 걱정하지 않습니까? –