반응형
Mongoose(MongoDB)를 사용하여 중첩된 문서 쿼리
저는 mongodb로 시작해서 중첩된 문서를 쿼리하는 데 어려움을 겪고 있습니다.두 가지 스키마가 있습니다.
var LinkSchema = new mongoose.Schema({
url: String,
name: String
});
var UserSchema = new mongoose.Schema({
name: String,
links: [LinkSchema]
});
보시다시피, 저는 간단한 북마크 도구를 만들고 있습니다.각 사용자는 이름과 링크 모음을 가집니다.각 링크에는 이름과 URL이 있습니다.
예를 들어, 링크가 다른 사용자의 링크 배열에 이미 있는지 확인합니다.다음과 같은 작업을 수행할 수 있습니다(블라드의 링크 컬렉션을 가져온 다음 쿼리 링크가 이미 컬렉션에 속해 있는지 확인).
app.get("/:query", function(req, res){
User.findOne({"name":"vlad"}, function(err, user){
user.links.find({"url":req.params.query}, function(err, foundLinks){
if(foundLinks){
res.send("link already exists!");
} else {
res.send("link doesn't exist!");
}
});
});
});
물론 이 코드는 작동하지 않습니다. 왜냐하면 "user.links.find()"를 수행할 수 없기 때문입니다.user.links.map을 수행하여 URL만 추출한 다음 이에 대해 멤버쉽 쿼리를 실행할 수 있습니다.하지만 저는 이것이 올바른 해결책과는 거리가 멀다고 생각합니다.DB 쿼리를 기본적으로 사용하여 이와 같은 작업을 수행할 수 있는 방법이 있을 것입니다.누가 도와줄 수 있나요?감사해요!
다음과 같이 mongoose에 포함된 문서를 쿼리할 수 있습니다.
User.find({'links.url':req.params.query}, function(err, foundUsers){
// ---
});
그리고 사용자 "filename"에 속하는 링크를 찾으려면 다음과 같이 쓸 수 있습니다.
User.find({name:'vlad','links.url':req.params.query}, function(err, foundUsers){
// ---
});
이 정도면 효과가 있을 겁니다.
특정 사용자에게 속한 특정 링크를 찾으려면 다음 작업을 수행합니다.
User.find({name:'vlad','links.url':req.params.query}, { 'links.$': 1 }, function(err, foundUsers){
// ---
});
언급URL : https://stackoverflow.com/questions/13097266/querying-nested-documents-using-mongoose-mongodb
반응형
'programing' 카테고리의 다른 글
그리드뷰에서 THEAD를 렌더링하려면 어떻게 해야 합니까? (0) | 2023.05.07 |
---|---|
Azure의 경우 p7b를 pfx로 변환 (0) | 2023.05.07 |
Git에서 오리진/마스터와 오리진 마스터의 차이점은 무엇입니까? (0) | 2023.05.07 |
WPF 텍스트 상자의 다중 회선 (0) | 2023.05.07 |
pip을 사용하여 Windows에 PyQt4를 설치하는 방법은 무엇입니까? (0) | 2023.05.02 |