[英]mongoose find in document object
可以說我有一個貓鼬模式,例如:
mongoose.Schema({
website_id:mongoose.SchemaTypes.ObjectId,
data:Object
})
其中數據字段包含 JSON 對象。 就像是:
{
"actions":[
{
"action":"pageChange",
"url":"http://localhost:3000/login",
"dom":"",
"timestamp":1653341614846
},
{
"action":"pageChange",
"url":"http://localhost:3000/signup",
"dom":"",
"timestamp":1653341626442
},
{
"action":"pageChange",
"url":"http://localhost:3000/view",
"dom":"",
"timestamp":1653341626442
},
{
"action":"pageChange",
"url":"http://localhost:3000/login",
"dom":"",
"timestamp":1653341626442
}
]
}
有什么方法可以獲取所有文檔,其中數據字段對象包含http://localhost:3000/login作為 url,而無需先獲取所有文檔並循環它們。
對象將是動態生成的,並且項目將自我重復
當然,有幾種方法,在這種情況下,最好的方法之一是使用“聚合”
db.collection.aggregate([
{$unwind: "$actions"},
{ $match: {"actions.url": "http://localhost:3000/login"}},
{$group: {
_id: "$_id",
actions: {$push: "$actions"}
}
}
])
返回響應:
{
"actions": [
{
"action": "pageChange",
"dom": "",
"timestamp": 1.653341614846e+12,
"url": "http://localhost:3000/login"
},
{
"action": "pageChange",
"dom": "",
"timestamp": 1.653341626442e+12,
"url": "http://localhost:3000/login"
}
]
}
如果我找到其他或更好的方法,我一定會分享.. 我希望這個解決方案可以幫助你。
你當然可以這樣做。 您可以在查詢中以字符串的形式指定對象嵌套。
await MyModel.find({ 'data.objectKey.items.item': 'text I want to find' }).exec();
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.