2016-06-18 10 views
0

明らかに、私がここで理解していないことがあります。 Model.findOne()クエリを実行したあと、findOne()結果に基づいてModel.find()クエリが実行されます。Mongooseシェルの結果と異なる形式のMongooseが返されましたか?

Model.find()クエリのドキュメントIDは、同じドキュメントをMongoシェルから直接クエリするときとは異なるフォーマットになっているようです。私は1時間、グーグルではありますが運はありません。私は何が欠けているのですか?

Model.find()結果...

{ _id: ObjectID { _bsontype: 'ObjectID', id: 'W_?àÅÜY¼-íbO' }, // <- Problem 
    salt: 'ULRtWgj0qgblPRbSPwTe4A==', 
    displayName: 'test tester', 
    provider: 'local', 
    username: 'tester', 
    created: Tue Jun 14 2016 06:36:48 GMT+0200 (Romance Daylight Time), 
    roles: [ 'user' ], 
    profileImageURL: 'modules/users/client/img/profile/default.png', 
    referrers: { level1: ObjectID { _bsontype: 'ObjectID', id: 'W^_ó 5IE\u0013 
    N\u0010c' } }, // <- Also problem 
    password: 'jXpp+RJIegHFKD50sL2aOlOUhE0rvYtSJZIDB244SDIw93yrbuFCTUJK3SZIs3F 
    w0DdHOUzlQoLQwTGEcF67Kg==', 
    email: '[email protected]', 
    lastName: 'tester', 
    firstName: 'test', 
    __v: 0 
} 

モンゴシェルは

{ 
    "_id" : ObjectId("575f89e0c5dc59bc2ded62d5"), // <- This is different! 
    "salt" : "ULRtWgj0qgblPRbSPwTe4A==", 
    "displayName" : "test tester", 
    "provider" : "local", 
    "username" : "tester", 
    "created" : ISODate("2016-06-14T04:36:48.130Z"), 
    "roles" : [ 
      "user" 
    ], 
    "profileImageURL" : "modules/users/client/img/profile/default.png", 
    "referrers" : { 
      "level1" : ObjectId("575ebef32035ccc8134e1063") // <- This too! 
    }, 
    "password" : "jXpp+RJIegHFKD50sL2aOlOUhE0rvYtSJZIDB244SDIw93yrbuFCTUJK3S 
     ZIs3Fw0DdHOUzlQoLQwTGEcF67Kg==", 
    "email" : "[email protected]", 
    "lastName" : "tester", 
    "firstName" : "test", 
    "__v" : 0 
} 
> 

結果は誰もが私が欠けているものをコンセプトに私に説明できますか?私の検索クエリのほとんどはちょうどいいです...これは私がこれに遭遇したのは初めてです。前もって感謝します。

+0

あなたはどのバージョンのMongoDBとMongooseを使用していますか?それはバージョンの不一致かもしれません([この記事を参照] http://stackoverflow.com/questions/30852106/why-new-documents-in-mongo-have-an-object-and-not-an-objectid/30855254 )といくつかの答え) – robertklep

+0

良い質問。 MongoDBのバージョンは3.0.5、Mongooseのバージョンは4.4.8のように見えます。このページによれば、それらのバージョンは互換性があるはずです:http://mongoosejs.com/docs/compatibility.html – aikorei

+0

私は定期的に非常によく似たバージョンを使用しています。最新のMongoose(4.5.0)を試してみることや、すべての依存関係を完全に再インストールする( '。/ node_modules'を削除し、' npm install'を実行する)ことで潜在的な問題を排除することができます。 – robertklep

答えて

0

OK、これは本当に愚かな音に起こっているが、代わりにresults.idまたはresults._idようなもので、IDを取得する_id自体があるので、私のMongoose.find()結果で、私はそれがresults._id.id(と妙にフォーマットされたIDと一致するようになりましたid値を持つオブジェクト)。

私はハッキーに見えますが、機能します。だから私は次のようなものを持っています:

id = results._id.id || results.id; 

と思われますが、動作します。

+0

これの最後に到達しようとする最後の試み(有名な最後の言葉...)では、これを試すことができます: 'mongoexport -d DB -c COLLECTION --limit 10'。 JSON形式でコレクションの10レコードをエクスポートする必要があります。私の場合、ObjectIdは次のようになります: '" _id ":{" $ oid ":" ... "}'。私はそれがあなたのデータベースで同じであるのだろうかと思います。 – robertklep

+0

また、返された結果に対して '.toObject()'を呼び出すことによっても良い結果が得られるかもしれません。 – slugonamission

+0

@robertklepそのユーザーの結果は次のとおりです。 '{" _id ":{" $ oid ":" 575f89e0c5dc59bc2ded62d5 "}" salt ":" ULRtWgj0qgblPRbSPwTe4A == "、" splayName ":"テストテスター "、"プロバイダ"" local "、" username ":" tester "、" created ":{" $ dat e ":" 2016-06-14T04:36:48.130Z "}、" roles ":[" user "]、 "profileImageURL": "modules/users /client/img/profile/default.png",referrers":""level1":{"$oid":"575ebef32035ccc8 134e1063"}}、 "password": "jXpp + RJIegHFKD50sL2aOlOUhE0rvYtSJZIDB244SDIw93yrbuFCTUJK 3SZIs3Fw0DdHOUzlQoLQwTGEcF67Kg ==」、 "電子メール": "[email protected]"、 "lastNameの": "テスト えー"、 "firstNameの": "テスト"、 "__ V":0} '。 – aikorei

関連する問題