假設我有兩個集合:一個有作者和他們的書籍陣列,另一個有訂單和書籍陣列:
作者:
{
"_id" : 1,
"name" : "Jane Austen"
"books" : [ { "book_name": "Pride and prejudice", "pages": 325 }, { "book_name": "Persuassion", "pages": 355 } ];
},
{
"_id" : 2,
"name" : "Mark Twain"
"books" : [ { "book_name": "Tom Swayer", "pages": 500 } ];
}
命令:
{
"_id" : Order_ID,
"total : 500
"books" : [ { "book_name": "Pride and prejudice", "pages": 325 } ];
}
如何列印包含“簡·奧斯汀”書籍的訂單?
我嘗試執行以下操作:
var austen = db.authors.find({name: "Jane Austen"}, {books: 1, _id: 0});
他將印刷簡奧斯汀作為作者的所有書籍。
然后我嘗試這樣做:
db.order.find( { books{ $in: [austen] } }, { _id: 0 } )
但是它似乎沒有給我任何結果,我不知道為什么
uj5u.com熱心網友回復:
你的方法很好,只是你的型別不匹配。
var austen = db.authors.find({name: "Jane Austen"}, {books: 1, _id: 0});
此時austen是一個游標(或一個物件陣列,取決于您執行它的位置),我建議您findOne改用它。
var austen = db.authors.findOne({name: "Jane Austen"}, {books: 1, _id: 0});
現在austen是:
{
"name" : "Jane Austen"
"books" : [ { "book_name": "Pride and prejudice", "pages": 325 }, { "book_name": "Persuassion", "pages": 355 } ];
}
所以現在你可以這樣做:
db.order.find( { books: { $in: austen.books } }, { _id: 0 } ).toArray();
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/401456.html
