私はmongodbから始めて、ネストされたドキュメントをクエリするのに苦労しています。私は2つのスキーマを持っています:
var LinkSchema = new mongoose.Schema({
url: String,
name: String
});
var UserSchema = new mongoose.Schema({
name: String,
links: [LinkSchema]
});
ご覧のとおり、私は単純なブックマークツールを作成しようとしています。各ユーザーには、名前とリンクのコレクションがあります。各リンクには名前とURLがあります。
今、私がやろうとしているのは、たとえば、誰かのリンク配列にリンクがすでに存在するかどうかを確認することです。私はこのようなことをしたいと思っています(vladのリンクコレクションを取得してから、クエリリンクがすでにコレクションに属しているかどうかを確認しようとしています):
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クエリを使用してこのようなことをネイティブに行う方法が必要です。誰かが助けることができますか?ありがとうございました!