2016-12-22 17 views
0

マニュアル参照で問題があります。誰も助けることができますか? 「myuserの」コレクションからアドレスを選択するMongo Dbマニュアルリファレンス

MongoDB Enterprise > db.myUser.find().pretty() 
{ 
     "_id" : ObjectId("585beb14efb2d0abae8bcfe5"), 
     "name" : "Tom Benzamin", 
     "contact" : "987654321", 
     "dob" : "01-01-1991", 
     "address" : [ 
       ObjectId("58599187efb2d0abae8bcfdf"), 
       ObjectId("58599187efb2d0abae8bcfe0") 
     ] 
} 

MongoDB Enterprise > db.myAddress.find().pretty() 
{ 
     "_id" : ObjectId("58599187efb2d0abae8bcfdf"), 
     "building" : "22 A, Indiana Apt", 
     "pincode" : 123456, 
     "city" : "Los Angeles", 
     "state" : "california" 
} 

が変数もたらすために:

MongoDB Enterprise > var result = db.myUser.find({},{_id:0,address:1}) 

MongoDB Enterprise > result 
{ "address" : [ ObjectId("58599187efb2d0abae8bcfdf"), ObjectId("58599187efb2d0abae8bcfe0") ] } 

がMYUSERコレクションを照合することによってmyAddressは、コレクションからデータを取得:私は、「ユーザー」データベースに次の2つのコレクションを持っている

以下は
MongoDB Enterprise > var Final = db.myAddress.find({_id:{$in:result["address"]}} 
) 

エラーです:

MongoDB Enterprise > Final 
Error: error: { 
     "ok" : 0, 
     "errmsg" : "$in needs an array", 
     "code" : 2, 
     "codeName" : "BadValue" 
} 

この問題を解決するにはどうすればよいですか?

答えて

1

find()クエリで返される値はカーソルなので、値を出力するとカーソルが反復して値が失われます。あなたがコンテンツを "維持" する場合は、代わりに `のtoArray()`の.next()(cdbajorinが示唆したように)、または.toArray()

> var result = db.myUser.find({},{_id:0,address:1}).next() 

> result 
    { 
     "address" : [ 
      ObjectId("58599187efb2d0abae8bcfdf"), 
      ObjectId("58599187efb2d0abae8bcfe0") 
     ] 
    } 

>var Final = db.myAddress.find({_id:{$in:result.address}}) 

>Final 

{ "_id" : ObjectId("58599187efb2d0abae8bcfdf"), "building" : "22 A, Indiana Apt", "pincode" : 123456, "city" : "Los Angeles", "state" : "california" } 
+1

を呼び出して、あなたは 'あなたがそう)'次の(を使用することができます配列位置でアクセスする必要はありません。 – cdbajorin

+0

返信いただきありがとうございます。返されたことをご存知ですか? – Ravi

+0

@Ravi '.find()'については、[documentation](https://docs.mongodb.com/v3.2/reference/method/db.collection.find/#db.collection.find) – cdbajorin