I는 다음과 같이 보입니다 모음이 있습니다 N 요소를 선택하는 표준 방법이 있나요선택하여 MongoDB 문서
[
{
"id": 1,
"tier": 0
},
{
"id": 2,
"tier": 1
},
{
"id": 3
"tier": 2
},
{
"id": 4,
"tier": 0
}
]
을 어디에 가장 낮은 계층의 요소를 선택하는 probabilty p이고, 그 다음으로 낮은 계층은 (1- p) * p 등이며 임의의 표준 임의 선택이 가능합니다. 다음 그래서 예를 들어
, 가능성이 가장 높은 것은를 발생 내가 N = 2 위의 예제에 대한 쿼리 및 (난 항상 사실 생각) 어떤 페이지> 0.5을 실행하는 경우, 나는 돌아올거야 [{"id": 1, ...}, {"id": 4}]
; n = 3이면 [{"id": 4}, {"id": 1}, {"id": 2}]
등
등. 여기 로 같은 사전을 주어 일부 의사 파이썬 코드는는 OBJS의 :
db.docs.ensureIndex({ random_point: '2d' })
임의의 점으로 문서의 무리를 만들려면 :
이def f(objs, p, n):
# get eligible tiers
tiers_set = set()
for o in objs:
eligible_tiers.add(o["tier"])
tiers_list = sorted(list(tiers_set))
# get the tier for each index of results
tiers = []
while len(tiers) < min(n, len(obis)):
tiers.append(select_random_with_initial_p(eligible_tiers, p))
# get res
res = []
for tier in tiers:
res.append(select_standard_random_in_tier(objs, tier)
return res
내가 요구 사항을 따르지 않는합니다. 질문을 편집하고 요구 사항을 의사 코드로 작성한 쿼리를 포함 할 수 있습니까? – WiredPrairie
그게 도움이 되나요? –
예, 조금 더 명확합니다. 그러나, 와우, :), 나는 그것을 취하고 어떤 직접적인 방식으로 작동하도록하는 어떤 방법을 보지 못합니다. 몇 가지 측면에 대해 집계 프레임 워크를 사용하면 운이 좋겠지 만 임의 선택은 전혀 매핑되지 않습니다. – WiredPrairie