タグ付けされた質問 「mongoose」

Mongooseは、JavaScriptで記述され、非同期環境で動作するように設計された、MongoDBオブジェクトモデリングツール、つまりODM(Object Document Mapper)です。


1
マングースで2つのORクエリをANDと組み合わせる
このSQLステートメントのように、Monooseで2つのORクエリをANDと組み合わせたいと思います。 SELECT * FROM ... WHERE (a = 1 OR b = 1) AND (c=1 OR d=1) メインアプリケーションからモデルオブジェクトのみを取得するNodeJSモジュールでこれを試しました。 /********** Main application ***********/ var query = MyModel.find({}); myModule1.addCondition(query); myModule2.addCondition(query); query.exec(...) /************ myModule1 ***************/ exports.addCondition = function(query) { query.or({a: 1}, {b: 1}); } /************ myModule2 ***************/ exports.addCondition = function(query) { query.or({c: 1}, …

5
マングースで列挙型を作成して使用する方法
enumマングースで型を作成して使用しようとしています。チェックアウトしましたが、適切な結果が得られません。私はenum自分のプログラムで次のように使用しています: 私のスキーマは次のとおりです。 var RequirementSchema = new mongooseSchema({ status: { type: String, enum : ['NEW,'STATUS'], default: 'NEW' }, }) しかし、私はここで少し混乱しています。どうすればenumlikeの値をに入れることができますかJava NEW("new")。enum列挙可能な値に従ってデータベースにを保存するにはどうすればよいですか。Expressnode.jsで使用しています。

16
「@」が含まれるMongoDBパスワード
Node.jsのMongooseを使用して、ユーザー名とパスワードでMongoDBデータベースに接続しようとしています。すべてのドキュメントには、接続文字列は次のようになるはずだと書かれています mongodb://username:password@host:port/db ただし、パスワードには「@」文字が含まれています。マングースが理解できる接続文字列をこれから作成するにはどうすればよいですか?パスワードの「@」をエスケープできますか、それとも別の接続方法を使用する必要がありますか?

4
Mongooseを使用してコレクションからすべてのドキュメントを削除するにはどうすればよいですか?
私は方法を知っています... 1つのドキュメントを削除します。 コレクション自体を削除します。 Mongoを使用してコレクションからすべてのドキュメントを削除します。 しかし、Mongooseを使用してコレクションからすべてのドキュメントを削除する方法がわかりません。ユーザーがボタンをクリックしたときにこれを実行したいと思います。あるエンドポイントにAJAXリクエストを送信し、エンドポイントに削除を行わせる必要があると思いますが、エンドポイントで削除を処理する方法がわかりません。 私の例では、Datetimeコレクションがあり、ユーザーがボタンをクリックしたときにすべてのドキュメントを削除したいと思います。 api / datetime / index.js 'use strict'; var express = require('express'); var controller = require('./datetime.controller'); var router = express.Router(); router.get('/', controller.index); router.get('/:id', controller.show); router.post('/', controller.create); router.put('/:id', controller.update); router.patch('/:id', controller.update); router.delete('/:id', controller.destroy); module.exports = router; api / datetime / datetime.controller.js 'use strict'; var _ = …


8
(ノード:3341)DeprecationWarning:Mongoose:mpromise
私はカスタムメソッドを使用してマングースの上にクラスを開発しようとしているので、独自のクラスでマングースを拡張しましたが、新しい車のメソッドを作成するために呼び出すと、機能しますが、ストリップとエラーが発生します。ここで、私がやろうとしていることを見てください。 私はこの警告を受けています (node:3341) DeprecationWarning: Mongoose: mpromise (mongoose's default promise library) is deprecated, plug in your own promise library instead: http://mongoosejs.com/docs/promises.html 私がした後 driver.createCar({ carName: 'jeep', availableSeats: 4, }, callback); driverはDriverクラスのインスタンスです const carSchema = new Schema({ carName: String, availableSeats: Number, createdOn: { type: Date, default: Date.now }, }); const driverSchema = new …


10
Mongooseから.populate()を使用して特定のフィールドを返します
クエリを実行した後、MongoDBからJSON値が返されます。問題は、返品に関連するすべてのJSONを返したくないということです。ドキュメントを検索しようとしましたが、これを行う適切な方法が見つかりませんでした。私はそれが可能であるかどうか、もしそうならそれを行う適切な方法は何であるか疑問に思いました。例:DB内 { user: "RMS", OS: "GNU/HURD", bearded: "yes", philosophy: { software: "FOSS", cryptology: "Necessary" }, email: { responds: "Yes", address: "rms@gnu.org" }, facebook: {} } { user: "zuckerburg", os: "OSX", bearded: "no", philosophy: { software: "OSS", cryptology: "Optional" }, email: {}, facebook: { responds: "Sometimes", address: "https://www.facebook.com/zuck?fref=ts" } } フィールドがユーザーに存在するが、別のフィールドを返さない場合、フィールドを返す適切な方法は何でしょうか。上記の例では[email][address]、RMSの[facebook][address]フィールドとZuckerburgのフィールドを返します。これは、フィールドがnullであるかどうかを確認しようとしましたが、機能していないようです。 …

5
マングースの制限/オフセットおよびカウントクエリ
クエリのパフォーマンスに関して少し奇妙なことです...ドキュメントの総数を実行し、制限およびオフセットできる結果セットを返すこともできるクエリを実行する必要があります。 したがって、合計57のドキュメントがあり、ユーザーは10のドキュメントを20でオフセットしたいと考えています。 これを行うには2つの方法が考えられます。1つは57個のドキュメントすべて(配列として返される)をクエリし、次にarray.sliceを使用して必要なドキュメントを返すことです。2番目のオプションは、2つのクエリを実行することです。最初のクエリはmongoのネイティブの「count」メソッドを使用し、次にmongoのネイティブの$ limitおよび$ skipアグリゲーターを使用して2番目のクエリを実行します。 どちらがより適切にスケーリングすると思いますか?すべてを1つのクエリで実行しますか、それとも2つの別々のクエリを実行しますか? 編集: // 1 query var limit = 10; var offset = 20; Animals.find({}, function (err, animals) { if (err) { return next(err); } res.send({count: animals.length, animals: animals.slice(offset, limit + offset)}); }); // 2 queries Animals.find({}, {limit:10, skip:20} function (err, animals) { if (err) { …
84 mongodb  mongoose 

15
コレクションにデータを入力したときにクエリで返されないように、Mongoose / MongoDBのパスワードフィールドを保護するにはどうすればよいですか?
2つのコレクション/スキーマがあるとします。1つは、ユーザー名とパスワードのフィールドを持つユーザースキーマです。次に、作成者フィールドにユーザースキーマへの参照があるブログスキーマがあります。マングースを使って次のようなことをした場合 Blogs.findOne({...}).populate("user").exec() ブログドキュメントとユーザーも入力しますが、Mongoose / MongoDBがパスワードフィールドを返さないようにするにはどうすればよいですか?パスワードフィールドはハッシュ化されていますが、返されるべきではありません。 パスワードフィールドを省略して、簡単なクエリで残りのフィールドを返すことができることはわかっていますが、populateを使用してそれを行うにはどうすればよいですか。また、これを行うためのエレガントな方法はありますか? また、ユーザーがログインしたりパスワードを変更したりする場合など、状況によってはパスワードフィールドを取得する必要があります。

6
マングースのどのSchemaTypeがタイムスタンプに最適ですか?
私はMongoose、MongoDB、およびNodeを使用しています。 フィールドの1つがdate \ timestampであるスキーマを定義したいと思います。 過去5分間に更新されたすべてのレコードを返すために、このフィールドを使用したいと思います。 MongooseではTimestamp()メソッドを使用できないため、次のJavascriptメソッドを使用するしか選択肢がないことを理解しています。 time : { type: Number, default: (new Date()).getTime() } これは、巨大なDBをクエリするための最も効率的な方法ではない可能性があります。誰かがこれを実装するより効率的な方法を共有できれば本当にありがたいです。 これをMongooseで実装し、MongoDBタイムスタンプを使用できるようにする方法はありますか?

6
マングースにデータを入力した後のクエリ
私は一般的にMongooseとMongoDBにかなり慣れていないので、このようなことが可能かどうかを理解するのに苦労しています。 Item = new Schema({ id: Schema.ObjectId, dateCreated: { type: Date, default: Date.now }, title: { type: String, default: 'No Title' }, description: { type: String, default: 'No Description' }, tags: [ { type: Schema.ObjectId, ref: 'ItemTag' }] }); ItemTag = new Schema({ id: Schema.ObjectId, tagId: { type: Schema.ObjectId, ref: …

3
Node.jsで複雑なJSON応答を返す方法は?
nodejsとexpressを使用して、JSONを使用して1つまたは複数のオブジェクト(配列)を返したいと思います。以下のコードでは、一度に1つのJSONオブジェクトを出力します。それは機能しますが、これは私が望んでいるものではありません。多くのオブジェクトがあるため、生成された応答は有効なJSON応答ではありません。 すべてのオブジェクトを配列に追加して、その特定の配列をres.endに返すことができることはよく知っています。ただし、これは処理が重くなり、メモリを大量に消費する可能性があると思います。 nodejsでこれを達成するための適切な方法は何ですか?query.eachは呼び出すのに適切なメソッドですか? app.get('/users/:email/messages/unread', function(req, res, next) { var query = MessageInfo .find({ $and: [ { 'email': req.params.email }, { 'hasBeenRead': false } ] }); res.writeHead(200, { 'Content-Type': 'application/json' }); query.each(function(err, msg) { if (msg) { res.write(JSON.stringify({ msgId: msg.fileName })); } else { res.end(); } }); });

3
オブジェクトIDの配列を使用してマングーススキーマを作成するにはどうすればよいですか?
マングースのユーザースキーマを定義しました。 var userSchema = mongoose.Schema({ email: { type: String, required: true, unique: true}, password: { type: String, required: true}, name: { first: { type: String, required: true, trim: true}, last: { type: String, required: true, trim: true} }, phone: Number, lists: [listSchema], friends: [mongoose.Types.ObjectId], accessToken: { type: String } // …

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.