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

MongodbはIDでサブドキュメントをクエリできません(nullを返します)

    自分がいくらだと思っていても、ObjectIdをクエリしているわけではありません。 ではない16進文字列としてエンコードされたObjectIdをクエリしています 同じこと。適切にタイプキャストすれば、はるかに多くの成功を収めることができます。

    mongo(JS)REPLシェルから詳細に編集:

    > // Omitting the _id, or generating a new one, are equivalent during insert.
    > db.foo.insert({_id: ObjectId()})
    WriteResult({ "nInserted" : 1 })
    
    > db.foo.find()  // As expected, we get back our _real_ ObjectId value.
    { "_id" : ObjectId("5c9cfab873724727778c0730") }
    
    > // Can we "insert the record again" using a string version of the ID?
    > db.foo.insert({_id: "5c9cfab873724727778c0730"})
    WriteResult({ "nInserted" : 1 })  // Sure as heck can! No unique violation!
    
    > db.foo.find()  // Because THESE ARE NOT THE SAME
    { "_id" : ObjectId("5c9cfab873724727778c0730") }
    { "_id" : "5c9cfab873724727778c0730" }
    

    IRCで話し合った後、与えられた回答の「検索可能な用語」を理解するのは難しいようです。 StackOverflow(またはGoogle、またはDDG)で「mongoosetypecast ObjectId」(引用符なし、または単に「mongoose ObjectId」…)を検索すると、これはMongooseユーザーに特に一般的な問題であるため、多くの回答が見つかります。

    >

    1. マングース複数の条件で検索

    2. MongoDB $またはクエリが機能しないのはなぜですか?

    3. EC2環境でnode-mongodb-nativeを使用してNode.jsサーバーにMongoDBを設定するにはどうすればよいですか?

    4. mongoの配列要素を更新します