質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
MongoDB

MongoDBはオープンソースのドキュメント指向データベースの1つです。高性能で、多くのリトルエンディアンシステムを利用することができます。

JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

Express

ExpressはNode.jsのWebアプリケーションフレームワークです。 マルチページを構築するための機能セットおよびハイブリッドのWebアプリケーションを提供します。

Q&A

解決済

1回答

987閲覧

MongoDBでシーケンスを利用したIDで条件検索する方法

Mikamikachan

総合スコア2

MongoDB

MongoDBはオープンソースのドキュメント指向データベースの1つです。高性能で、多くのリトルエンディアンシステムを利用することができます。

JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

Express

ExpressはNode.jsのWebアプリケーションフレームワークです。 マルチページを構築するための機能セットおよびハイブリッドのWebアプリケーションを提供します。

0グッド

0クリップ

投稿2021/12/21 16:30

MongoDBでusersというコレクションを作成しました。デフォルトで生成されるObjectIdの_idとは別に、ユニークでシーケンスな"uId"が必要だったため、カウンターズコレクションを使い"uId"を作成しました。そして以下のようにuIdを条件に検索をかけてデータが返ってくるようなコードを作成しました。

app.get("/api/user/:id", (req, res) => { console.log(req.params.id); await this.User.findOne({ uId: req.params.id }) .exec() .then((user) => { res.json(user); }); });

http://localhost:4000/api/user/3 でuId:3である値が返ってくるか試したところ、usersコレクションの一番最初に格納されているデータが返ってきました。

/*http://localhost:4000/api/user/3*/ {"_id":"6235te783aio0hsbms3z5976", name:"omochi", uId:1}

試しに検索の方法をqueryに変えてみましたが結果は同じくコレクション内にある最初のデータが返ってきました。

app.get("/api/user", (req, res) => { console.log(req.query.id); await this.User.findOne({ uId: req.query.id }) .exec() .then((user) => { res.json(user); }); }); /*http://localhost:4000/api/user?uId=3*/ {"_id":"6235te783aio0hsbms3z5976", name:"omochi", uId:1}

検索条件の中身をuIdからデフォルトで生成された_idに書き換えて、下記のように_idで検索してみたところ、_idで指定したデータが返ってきました。

/*http://localhost:4000/api/user/6434de543ere7weee3a56e5*/ {"_id":"6434de543ere7weee3a56e5", name:"dango", uId:3}

デフォルトで生成された_idを利用すれば上記のコードは期待通りに動いてくれるのですが、uIdを条件に検索するとうまくいきません。

カウンターズコレクションに関してですが、まずカウンターズコレクションはMongoAtlasで作成しました。そのあとは"MongoDB Auto-Increment"というMongoDBのウェブサイトを参考に作成しました。
jsファイル内にはuserSchemaのみを宣言しています。

わかりにくい説明で申し訳ないですが、シーケンスを利用し生成したuIdでデータ検索をする方法を教えていただければ幸いです。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

自己解決

以下のコードをuserSchemaに追加したら、uIdで条件検索をすることができるようになりました。

const userSchema = new Schema ( { uId: { type: Number, unique: true }, name: String, } );

投稿2021/12/21 19:42

Mikamikachan

総合スコア2

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問