問題タブ [mongoskin]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
node.js - mongodbプロジェクションクエリのアイテムと一緒に、またはアイテムの間に配列を配置する方法は?
次の形式でアイテムを格納するmongodbデータベースがあります。
クエリを使用して、特定の日付の特定のアイテム データを取得したいと考えています。ハードコーディングで1日以上実行できますが、特定の日付とアイテム名が自動的に入力される配列を指定したいのですが、スタックとmongoドキュメントで1日以上検索しても見つかりませんでしたなんでも。これで私を助けてください。特定のアイテムと日付を取得するクエリは次のようになります。
ありがとう
javascript - mongodb接続を閉じて、複数の並列非同期クエリで正しい結果を得る
私はモンゴとノードが初めてです。現在、Mongoskin と Bluebird を使用して db 接続とクエリを処理しています (ここで提案されているように: https://stackoverflow.com/a/23687958/2701348 )。
ユーザー、バインダー、カードの 3 つのコレクションがあります。
Binders コレクションには、各ユーザーのカードに関する情報が含まれています。バインダー内の各ドキュメントには、次のプロパティがあります。
カードが変更されると、すべてのユーザー バインダーに対して変更されるように、別の Cards コレクションを用意することを好みます。
ここで、次のような特定のユーザーの配列を取得します。
次の問題があります。
- すべての非同期dbコールバックが呼び出された後、db接続を閉じる必要があります
- カード配列は、最後の db.collection('cards').find が結果を返した後に返される必要があります
次のコードが間違っていることはわかっていますが、議論の出発点になる可能性があります。
配列全体を送り返し、データベース接続を閉じるために、約束された非同期呼び出しを正しく処理する方法を見つけようとして苦労しています。
for ループの前に promise を構築し、それを使用して Cards promise のクエリをチェーンし、最後に db.close() および res.json(cards) ステートメントをチェーンする必要があると思います。
[編集] おそらく最も簡単な解決策は、単一のdb.collection('cards').find({Code: {$in: [bindersCodeArray] }}).toArrayAsync();内で単純に $in フィルターを使用することです。forループを避けます:
Promise を使用してこのなぞなぞを解決するエレガントな方法があるかどうか、まだ興味があります。
node.js - NodeJS + MongoSkin + タイムスタンプ
MongoSkin を介して Mongodb にタイムスタンプを挿入することに関する投稿はいくつかありますが、戻り側には何もありません (ObjectID から日付を取得する以外)。
findOne (MongoDate フィールドを含む) を実行した後、console-log はデータ フィールドを ISO 日付として読み取りますが、->sec / タイムスタンプをプルする内部関数があります。
node.js - 大きな結果セットが原因の MongoDb エラー
完全な結果セット(〜40の結果)を取得しようとすると、実際に問題に直面しています。各オブジェクトには、最大 260 の子参照と他のオブジェクトがパックされています。
実際、30 個のオブジェクトを表示しようとすると、うまくいきます。しかし、40で試してみると、そうではありません。各オブジェクトは正しく、無効なデータはありません。
mongoDb またはデフォルトで Mongoskin (mongodb へのアクセスに使用するライブラリ) によって承認された最大サイズ (4 または 16 mb) を超えたようで、mongodb はアプリケーションへのプール接続を閉じます。
では、ドキュメントの最大サイズまたは結果セットの最大サイズを増やして、必要なものすべてを表示するにはどうすればよいでしょうか?
EDIT:私のコレクションサイズは8Mbです(MongoVue情報から)
EDIT 2: データを取得するために使用するコード:
私のデータベースのスクリーンショット:
EDIT 3:データを利用する方法を変更しました
どちらも機能せず、リクエストが実行された後、mongodb 接続が失われます。アプリケーションでこのコードにコメントすると、すべてがうまく機能します。
編集 4 : 完全なスタック トレース、データベースの問題よりもライブラリの問題です
node.js - モンゴスキンとノードを使用したfindOne
私は、mongodbでfindOne関数を動作させようとしています(そして惨めに失敗しています)。このチュートリアル(http://cwbuecheler.com/web/tutorials/2014/restful-web-app-node-express-mongodb/)に従ったところ、うまく機能しましたが、単純なfindOneを実行しようとすると、そのような問題がありました、誰かが私を助けてくれますか? できる限りすべてのチュートリアルを検索しましたが、findone({_id: "idnumber"}) だけを使用できないことはわかっていますが、私の何が問題なのかわかりません。
「undefined のメソッド 'createFromHexString' を呼び出せません」というエラーが表示されます。どこで mongoskin.objectid を要求すればよいですか?
私のfindallは完璧に動作します:
どんな助けでも大歓迎です。