MongoDB 데이터 유형과 몽구스를 통해 문서와 스키마를 사용하는 가장 좋은 방법을 배우고 있습니다.다른 객체 목록을 사용하는 MongoDb Mongoose Schema 객체에 접근하는 방법
탐색 항목을 목록으로 저장하는 탐색 모음 개체에 대한 몇 가지 스키마를 정의했으며 각 항목은 속성 이름, 유형, URL 및 드롭 다운 목록이있는 스키마로 정의됩니다. any가 있습니다 (유형이 "드롭 다운"인 경우). 여기
그 스키마 있습니다var navSchema = new Schema({
id: String,
items: [Schema.ObjectId]
});
는 탐색 객체이며,
var navItemSchema = new Schema({
name: String,
type: {type: String, default: "link"},
url: {type: String, default: null},
dropdowns: {type: [Schema.ObjectId], default: null}
});
는 탐색 항목 스키마이지만, 각각의 탐색 항목은 잠재적으로 드롭 다운을 할 수 있습니다, 그래서 드롭 다운은이다 잠재적으로 드롭 다운을 가질 수있는 탐색 항목 목록. 그러나이 경우에는 단지 몇 가지가 있습니다. 이제
는 "홈"var home = new navItem({
name: "home",
url: "/home"
});
뿐만 드롭 다운에 항목, 나는 탐색 항목을 만들려면이 같은 뭔가를해야, 예를 들어 이러한 개체에 대한 데이터를 작성, 나는 모두를 정의해야 내가 아는 항목은 해당 항목을 포함하는 목록을 정의하기 전에 드롭 다운되며, 그런 다음 상위 항목을 정의하고 방금 정의한 항목으로 목록을 사용합니다. 이처럼
var allAccessories = new navItem({
name: "all accessories",
url: "/accessories"
});
var cushions = new navItem({
name: "cushions",
url: "/accessories#cushions"
});
var cupHolders = new navItem({
name: "cup holders",
url: "/accessories#cupholders"
});
var accessoriesDropdownItems = [
allAccessories,
cushions,
cupHolders
];
var accessories = new navItem({
name: "accessories",
type: "dropdown",
dropdowns: accessoriesDropdownItems
});
그래서 나는 바로 그 일을하고 있다고 생각합니다. ..? 이 방법에 대한 나의 유일한 불만은이 mongodb 객체/콜렉션을 생성하는 nav.js 파일에서 다른 항목의 드롭 다운에서 어떤 항목이 사용될 것인지 생각해야하므로 이론적으로 순서대로 정렬해야합니다. 다른 변수가 문서에 정의되기 전에 정의되어야합니다.
그러나 두 개의 드롭 다운 목록에있는 항목을 사용하려면 해당 드롭 다운 목록 중 하나를 이미 문서에서 정의했지만 우분투에 추가하고 싶습니다. 어디서나 위의 항목 정의를 이동해야하는데, 이는 문서의 구성을 망칠 수 있습니다.
하지만 필자의 작업을 정리하고 분류하기 위해 들여 쓰는 것은 괜찮습니다.
내 질문은 실제로 다른 개체 목록 내에서 개체의 속성에 액세스하는 방법입니다.
직진 Nav를 단순히 id라는 객체가있는 "nav"로 정의하기 위해 _id ObjectId를 사용하여 모든 시간을 참조하고 싶지 않기 때문에 ...? 그리고 navItemsSchema 객체를 포함하는 items 배열.
하지만
db.navs.find({items: {$elemMatch: {name:"home"}}})
또는 db.navs.find ({항목 : ObjectId가 ("58d5d6df0789f718460ff278")}) 같은 것을 사용하여 몽고 쉘을 통해 이러한 개체에 도달 할 때 또는 dB. navs.find ({items : { "name": "home"}})
데이터를 다시 가져올 수 없습니다.나는 성공적 NAVS
app.get('/nav', function(req, res) {
mongoose.model('nav').find(function(err, nav) {
res.send(nav);
});
});
에 응답 발견 탐색을 통해 노드 응용 프로그램을 통해 컬렉션에있는 모든 개체를 반환하는 것을 처리했다 그러나이 모든 날 오브젝트 ID의와 데이터 구조와 객체가 아닌 실제 데이터를 반환합니다.
{"_id":"58d5d6df0789f718460ff287",
"id":"nav","__v":0,
"items":
["58d5d6df0789f718460ff278",
"58d5d6df0789f718460ff279",
"58d5d6df0789f718460ff286",
"58d5d6df0789f718460ff281",
"58d5d6df0789f718460ff282",
"58d5d6df0789f718460ff283",
"58d5d6df0789f718460ff284"
]
}
당신은 (items.findAll. 나는 말의 db.navs.nav ("탐색")를 통해 이러한 데이터 계층에 도달하는 방법을 내가 이해하는 데 도움이 시겠어요) 그것은 모든 항목과 JSON을 나열?
아니면 불가능하며 모든 항목을 반복해야합니다. 잠깐, 항목 목록에있는 ObjectId에 해당하는 객체가 어디에 저장되어 있습니까?