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

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

11
配列フィールドが空でないMongoDBレコードを見つける
私のすべてのレコードには、「画像」というフィールドがあります。このフィールドは文字列の配列です。 この配列が空でない最新の10レコードが必要です。 私はググってみましたが、不思議なことに私はこれについてあまり知りませんでした。私は$ whereオプションを読みましたが、それがネイティブ関数にとってどれほど遅いか、そしてより良い解決策があるかどうか疑問に思っていました。 そしてそれでも、それはうまくいきません: ME.find({$where: 'this.pictures.length > 0'}).sort('-created').limit(10).execFind() 何も返しません。this.pictures長さビットなしで離れることは機能しますが、もちろん空のレコードも返します。
503 mongodb  mongoose 

10
特定の値を含む配列を持つドキュメントを検索します
このスキーマがある場合... person = { name : String, favoriteFoods : Array } ... favoriteFoods配列には文字列が入力されます。マングースを使って、好きな食べ物として「寿司」を持っている人をすべて見つけるにはどうすればよいですか。 私は次の線に沿って何かを望んでいました: PersonModel.find({ favoriteFoods : { $contains : "sushi" }, function(...) {...}); (私$containsはmongodb にはないことを知っています、解決策を知る前に私が見つけることを期待していたことを説明するだけです)
499 mongodb  mongoose 

23
Mongooseでドキュメントを更新/アップサートするにはどうすればよいですか?
多分それは時間です、おそらくそれは私がまばらなドキュメンテーションに溺れていて、Mongooseでの更新の概念に頭を抱えることができないことです:) ここに取り引きがあります: 連絡先のスキーマとモデル(短縮されたプロパティ)があります。 var mongoose = require('mongoose'), Schema = mongoose.Schema; var mongooseTypes = require("mongoose-types"), useTimestamps = mongooseTypes.useTimestamps; var ContactSchema = new Schema({ phone: { type: String, index: { unique: true, dropDups: true } }, status: { type: String, lowercase: true, trim: true, default: 'on' } }); ContactSchema.plugin(useTimestamps); var Contact = …

3
Mongooseの「__v」フィールドとは
私が使用しているMongooseと、バージョン3をMongoDBバージョン2.2。ドキュメントに__vフィールドが表示され始めたことに気づきましたMongoDB。バージョン管理と関係がありますか?使い方は?

10
Mongoose:findOneAndUpdateが更新されたドキュメントを返さない
以下は私のコードです var mongoose = require('mongoose'); mongoose.connect('mongodb://localhost/test'); var Cat = mongoose.model('Cat', { name: String, age: {type: Number, default: 20}, create: {type: Date, default: Date.now} }); Cat.findOneAndUpdate({age: 17}, {$set:{name:"Naomi"}},function(err, doc){ if(err){ console.log("Something wrong when updating data!"); } console.log(doc); }); 私のmongoデータベースにはすでにいくつかのレコードがあります。このコードを実行して、年齢が17歳の名前を更新し、結果をコードの最後に出力します。 しかし、なぜ変更された名前ではなく、コンソールから同じ結果が得られるのですか。ただし、mongo dbコマンドラインに移動して「db.cats.find();」その結果、名前が変更されました。 次に、このコードを再度実行して結果を変更します。 私の質問は次のとおりです。データが変更された場合、なぜconsole.logで最初のデータを取得したのですか。

4
mongodb / mongoose findMany-配列にリストされたIDを持つすべてのドキュメントを検索します
_idの配列があり、それに応じてすべてのドキュメントを取得したいのですが、それを行うための最良の方法は何ですか? 何かのようなもの ... // doesn't work ... of course ... model.find({ '_id' : [ '4ed3ede8844f0f351100000c', '4ed3f117a844e0471100000d', '4ed3f18132f50c491100000e' ] }, function(err, docs){ console.log(docs); }); 配列には数百の_idが含まれる場合があります。

20
useNewUrlParserをtrueに設定することにより、「現在のURL文字列パーサーは非推奨です」という警告を回避
MongoDBインスタンスへの接続を確立するデータベースラッパークラスがあります。 async connect(connectionString: string): Promise<void> { this.client = await MongoClient.connect(connectionString) this.db = this.client.db() } これは私に警告を与えました: (ノード:4833)DeprecationWarning:現在のURL文字列パーサーは非推奨であり、将来のバージョンでは削除される予定です。新しいパーサーを使用するには、オプション{useNewUrlParser:true}をMongoClient.connectに渡します。 このconnect()メソッドは、MongoClientOptions2番目の引数としてインスタンスを受け入れます。ただし、というプロパティはありませんuseNewUrlParser。また、これらのプロパティを接続文字列に次のように設定しようとしましたが、mongodb://127.0.0.1/my-db?useNewUrlParser=true警告には影響しません。 ではuseNewUrlParser、これらの警告を削除するように設定するにはどうすればよいですか?スクリプトはcronとして実行する必要があり、これらの警告はゴミメールのスパムにつながるため、これは私にとって重要です。 対応するmongodbバージョンのドライバを使用しています3.1.0-beta4@types/mongodbパッケージのしてい3.0.18ます。どちらも最新のを使用して使用できnpm installます。 回避策 古いバージョンのmongodbドライバーを使用する: "mongodb": "~3.0.8", "@types/mongodb": "~3.0.18"




6
Mongooseドキュメントをプレーンオブジェクトにするにはどうすればよいですか?
JSONエンコーディングの前に拡張して応答として送信したいというマングースのドキュメントがあります。プロパティをドキュメントに追加しようとしても無視されます。プロパティはObject.getOwnPropertyNames(doc)、通常の拡張を不可能にすると表示されません。奇妙なことにJSON.parse(JSON.encode(doc))、すべての正しいプロパティを持つオブジェクトが機能して返されます。これを行うより良い方法はありますか?
200 node.js  mongoose 

7
mongoose _idと文字列の比較
次のように、データをプルしてオブジェクトに貼り付けるnode.jsアプリケーションがあります。 var results = new Object(); User.findOne(query, function(err, u) { results.userId = u._id; } その保存されたIDに基づいてif / thenを実行すると、比較が真になることはありません。 if (results.userId == AnotherMongoDocument._id) { console.log('This is never true'); } 2つのIDのconsole.logを実行すると、それらは正確に一致します。 User id: 4fc67871349bb7bf6a000002 AnotherMongoDocument id: 4fc67871349bb7bf6a000002 これはある種のデータ型の問題であると想定していますが、results.userIdをデータ型に変換する方法がわからないため、上記の比較が真になり、外部委託された頭脳(別名Google)が支援できませんでした。

30
C ++ BSON拡張機能の読み込みに失敗しました
ここにノードnoobの合計があります。サンプルノードアプリをセットアップしようとしましたが、実行しようとするたびに次のエラーがポップアップし続けます。 ノードアプリ Failed to load c++ bson extension, using pure JS version events.js:72 throw er; // Unhandled 'error' event ^ Error: failed to connect to [#$%67890 :27017] at null.<anonymous> (/home/thejazeto/code/nodejs/authen/node_modules/mongoose/node_modules/mongodb/lib/mongodb/connection/server.js:553:74) at EventEmitter.emit (events.js:106:17) at null.<anonymous> (/home/thejazeto/code/nodejs/authen/node_modules/mongoose/node_modules/mongodb/lib/mongodb/connection/connection_pool.js:140:15) at EventEmitter.emit (events.js:98:17) at Socket.<anonymous> (/home/thejazeto/code/nodejs/authen/node_modules/mongoose/node_modules/mongodb/lib/mongodb/connection/connection.js:512:10) at Socket.EventEmitter.emit (events.js:95:17) at net.js:830:16 at process._tickCallback (node.js:415:13)

6
mongooseを介して項目をmongo配列にプッシュする
私は答えを探してSOを精査しましたが、自分が何を求めているのかを説明するための適切な言葉を見つけられなかったと確信しています。 基本的に私は 'people'という名前のmongodbコレクションを持っています。そのコレクションのスキーマは次のとおりです。 people: { name: String, friends: [{firstName: String, lastName: String}] } これで、データベースに接続し、空の友達配列を持つ「人」を正常に作成する、非常に基本的な高速アプリケーションがあります。 アプリケーションの2番目の場所には、友達を追加するためのフォームが用意されています。フォームはfirstNameとlastNameを取り込んでから、適切なピープルオブジェクトを参照するために名前フィールドを含むPOSTを受け取ります。 私が苦労しているのは、新しいフレンドオブジェクトを作成して、それをフレンド配列に「プッシュ」することです。 mongo consoleを使用してこれを行う場合、ルックアップ基準の後に2番目の引数として$ pushを指定してupdate関数を使用しますが、mongooseにこれを行う適切な方法を見つけることができないようです。 db.people.update({name: "John"}, {$push: {friends: {firstName: "Harry", lastName: "Potter"}}}); 更新: それで、エイドリアンの答えは非常に役に立ちました。以下は私の目標を達成するために私がしたことです。 私のapp.jsファイルで、私はを使用して一時的なルートを設定しました app.get('/addfriend', users.addFriend); 私のusers.jsファイルのどこに exports.addFriend = function (req, res, next) { var friend = {"firstName": req.body.fName, "lastName": req.body.lName}; Users.findOneAndUpdate({name: req.user.name}, {$push: …

7
Node.js Mongoose.js文字列からObjectId関数
mongooseを使用してノードの文字列をobjectIdに変換する関数はありますか?スキーマは、何かがObjectIdであることを指定しますが、それが文字列から保存されると、mongoはそれがまだ単なる文字列であることを通知します。たとえば、オブジェクトの_idはと表示されobjectId("blah")ます。

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