如何解决如何使用nodesjs从猫鼬模式中读取嵌套数组元素?
她是我给用户的猫鼬模式代码:
var mongoose = require('mongoose');
var userSchema = new mongoose.Schema({
email: {
type: String,unique: true,required: true
},name: {
type: String,Addtasks : [{
website: String,otherdetails: String,exampleRadios: String,deadline: Date,Date: String,fileName: String,Bigpaths:[]
}]
});
module.exports = mongoose.model('User',userSchema);
这是以jSON格式存储的mongodb数据:
{
"_id" : ObjectId("5f378bec5bd30f3248ffae59"),"email" : "vikasthapar95@gmail.com","name" : "Vikas Yadav","Addtasks" : [
{
"website" : "grumpytext.com","keywords" : "article importance,article generation,article quality","words" : 1234567,"topic" : "How article is generated?","_id" : ObjectId("5f379c7164a77a338483704c"),"Bigpaths" : [
{
"path" : "public\\files\\chrome.VisualElementsManifest.xml","name" : "chrome.VisualElementsManifest.xml"
},{
"path" : "public\\files\\chrome_proxy.exe","name" : "chrome_proxy.exe"
},{
"path" : "public\\files\\master_preferences","name" : "master_preferences"
}
]
}
],}
现在,我想要的是仅对Addtasks数组内部的Bigpaths嵌套数组进行迭代,并为其贯穿循环的每个对象从中获取数据。我该如何实现?我尝试了某种populate()事情,但似乎没有帮助。请帮忙!
所需结果:
[
{
"path" : "public\\files\\chrome.VisualElementsManifest.xml",},}
]
UI侧(把手)上的预期结果:
Path 1 = public\\files\\chrome.VisualElementsManifest.xml
Path 2 = public\\files\\chrome_proxy.exe
Path 3 = public\\files\\master_preferences
解决方法
这将合并所有文档路径的根目录,
-
$unwind
解构Addtasks
数组 -
$unwind
解构Addtasks.Bigpaths
数组 -
$replaceRoot
将替换新根目录中的path: Addtasks.Bigpaths.path
db.collection.aggregate([
{ $unwind: "$Addtasks" },{ $unwind: "$Addtasks.Bigpaths" },{
$replaceRoot: {
newRoot: { path: "$Addtasks.Bigpaths.path" }
}
}
])
用于访问文档中的项目,
let paths = [];
data.Addtasks.forEach(function(Addtasks){
Addtasks.Bigpaths.forEach(function(Bigpaths){
paths.push({name: Bigpaths.name});
});
})
console.log(paths);
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。