sql >> データベース >  >> NoSQL >> MongoDB

MongodbfindがObjectidで機能していません

    WebページIDは文字列ですが、検索する_idはObjectIdです。 「webpageid」要素のObjectId値を持つドキュメントが結果テーブルにないため、検索結果はどの結果とも一致しません。

    私が見ているように、2つの解決策があります。

    1. webpageidの文字列の代わりにObjectIdsを保存できます resultsの要素 コレクション。もちろん、これの実装は、それらのドキュメントがコレクションにどのように入るかに基づいています。
    2. 返されたObjectId<から文字列変数を作成できます。 / a> 代わりに比較するループ内。たとえば、

      ...
      for(var i = 0; i < docs.length; i++) {
          var docId = docs[i]._id.toString(); // create a string
          db.get('results').findOne({'webpageid':docId}, function(err, doc)
          ...
      

    2番目のオプションを使用する場合は、webpageidの先頭に先頭の引用符がある理由を調べる必要があります。 resultsの2番目のドキュメントの値 コレクション。

    "webpageid" : "\"54960a916ecb16dc3c4880e8"
    

    最後に、私はあなたの要件についてあまり知りませんが、ソリューションとしてMongoDBを再考することをお勧めします。 JOINのようなものを作成しているようですが、これはMongoDBがうまく処理できるように設計されていないものです。




    1. 変数を正規表現に渡す方法

    2. 配列内の複数の基準に一致する

    3. Redisがシングルスレッド(イベントドリブン)である理由

    4. 春のウェブフラックスと春のデータリアクティブにページネーションを実装する方法はありますか