這是我的檔案,用戶注冊并創建他們的商店,現在每個商店用戶都可以添加書籍匿名用戶想要通過 id 或系統中所有可用的書籍獲取書籍
[
{
_id: ObjectId("61c0a1a895a761d0fe1a1408"),
storeName: 'Rose Book Store',
ownerName: 'Rose Ahmed',
books: [
{
name: 'economics',
totalStock: 12,
stockStatus: true,
_id: ObjectId("61c20d9fcfef88e51e37bdaa")
}
],
createdAt: ISODate("2021-12-21T17:02:30.221Z"),
__v: 0
},
{
_id: ObjectId("61c17c1481adc44ea10c6083"),
storeName: 'Toufik Book Store',
ownerName: 'Toufik Ahmed',
books: [
{
name: 'Database',
totalStock: 14,
stockStatus: true,
_id: ObjectId("61c217b72e2dc3395071bb26")
},
{
name: 'Database',
totalStock: 14,
stockStatus: true,
_id: ObjectId("61c217e92e2dc3395071bb2b")
},
{
name: 'MySql',
totalStock: 0,
stockStatus: false,
_id: ObjectId("61c218142e2dc3395071bb31")
}
],
createdAt: ISODate("2021-12-21T18:03:13.296Z"),
__v: 0
}
]
我怎樣才能得到所有的書,預期的輸出
books:[{
name:"Some_book",
totalStock:12,
stockStatus: true,
_id: "Some_id"
},
{
name:"Some_other_book"
totalStock:0,
stockStatus:false
_id: "Some_id"
}]
當用戶輸入下面給出的任何有效書籍 _id 預期輸出時,我如何通過 id 獲取書籍
books:{
name:"some_book",
totalStock: 2,
_id: "some object_id"}
uj5u.com熱心網友回復:
在這里我分享正常的聚合查詢https://mongoplayground.net/p/SOO_Ffia5-q
我們只是將所有書籍分組到一個檔案中,以便您獲得所有書籍。
相同的聚合可用于根據 id 獲取匹配的書籍。https://mongoplayground.net/p/ILHMW-kPueD
在聚合中,我們使用了以下階段:
匹配:根據書籍的 _id 過濾書籍 展開:展開匹配的檔案作為匹配的檔案可能在同一用戶/商店中預訂了其他不匹配的書籍 匹配:過濾展開的書籍所以我們只得到匹配的書籍專案:只回傳書籍而不是所有欄位
使用此示例查詢,您可以輕松創建貓鼬等效代碼,
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/389728.html
上一篇:如何從貓鼬結果中排除_id?
