var jd = {
type: "Person",
attributes: {
name: "John Doe",
age: 30
}
};
var pd = {
type: "Person",
attributes: {
name: "Penelope Doe",
age: 26
}
};
var ss = {
type: "Book",
attributes: {
name: "The Sword Of Shannara",
author: "Terry Brooks"
}
};
db.things.save(jd);
db.things.save(pd);
db.things.save(ss);
db.things.ensureIndex({attributes: 1})
db.things.find({"attributes.age": 30}) // => John Doe
db.things.find({"attributes.age": 30}).explain() // => BasicCursor... (don't want a scan)
db.things.find({"attributes.age": {$gte: 18}) // John Doe, Penelope Doe (via a scan)
목표는 범위 쿼리를 통해 모든 속성을 색인화하고 검색 할 수 있으며 색인을 실제로 사용한다는 것입니다 (모음 스캔과 반대 됨). 문서에 어떤 속성이 있는지 알려주지는 않습니다. 멀티 키에 대해 읽었지만 정확히 일치하는 쿼리 만 (인덱스로) 작동하는 것처럼 보입니다.MongoDB : 멀티 키를 사용하여 범위 쿼리를 사용할 수 있습니까?
Multikeys는 문서의 형식을 선호 : 나는 범위를 사용하여 속성으로 항목을 찾을 수 있습니다 하나 개의 인덱스에 의해 패턴이
var pd = {
type: "Person",
attributes: [
{name: "Penelope Doe"},
{age: 26}
]
};
있습니까?
편집 :
잠재적 유형의 무한한 배열을 가지고 의미가 스키마없는 DB에서, 아직 컬렉션 이름은 실질적 유형의 일종을 의미한다. 그러나 극단적 인 경우에는 컬렉션에 원하는 수의 유형을 허용하고자합니다 (따라서 사용자가 상상할 수있는 모든 사용자 정의 유형에 대한 모음을 정의 할 필요가 없습니다). 따라서 하나의 깊은 인덱스 (원거리 쿼리를 지원하는)를 가진 (모든 종류의) 속성에 의한 검색은 이런 종류의 일을 훨씬 더 실현 가능하게 만든다. 스키마리스 DB에 자연 스럽습니다.
http://jira.mongodb.org/browse/SERVER-2675
http://groups.google.com/group/mongodb-user에서이 질문을 게시하고 개발자의 답변을 얻을 수 있습니다. * 매우 반응이 좋습니다. –
팁 주셔서 감사. 나는 그랬어. :) – Mario