Arrays 如何从mongoose中的数组中查找对象
我有如下模式:-Arrays 如何从mongoose中的数组中查找对象,arrays,node.js,mongodb,object,mongoose,Arrays,Node.js,Mongodb,Object,Mongoose,我有如下模式:- var P = { s : [{ data : [], sec : mongoose.Schema.Types.ObjectId }] }; 现在我只想找到section的对象,而不是整行。例如,如果我传递sec值,我只需要该sec对象的s.data的值 示例:- { s : [ { data : [], sec : '52b9830cadaa9d273200000d' }
var P = {
s : [{
data : [],
sec : mongoose.Schema.Types.ObjectId
}]
};
现在我只想找到section的对象,而不是整行。例如,如果我传递sec
值,我只需要该sec
对象的s.data
的值
示例:-
{ s : [
{
data : [],
sec : '52b9830cadaa9d273200000d'
},{
data : [],
sec : '52b9830cadaa9d2732000005'
}
]
}
结果应该是-
{
data : [],
sec : '52b9830cadaa9d2732000005'
}
我不想要整排人。可能吗?如果是,请帮助我。您可以使用find()随时获取某个字段的值。例如,在您的案例中:
db.collectionName.find({},{s.data:1})
因此,第一个括号是应用任何条件或查询,第二个括号中必须将字段定义为1(仅获取这些字段的值)
请查看更多信息。
让我知道它是否解决了您的问题。不是进入Mongo或db,而是使用纯JavaSript技能这里是您提到的解决方案,Node.js将执行以下任务 模式
var P = { s : [
{
data : [],
sec : '52b9830cadaa9d273200000d'
},{
data : [],
sec : '52b9830cadaa9d2732000005'
}
]
};
搜索方法代码
var search = function (search_sec){
for (var i=0; i<(P.s.length);i++){
var pointer = P.s[i].sec;
var dataRow = P.s[i];
if((pointer) === search_sec ){
console.log(dataRow);
}
}
};
在此处使用演示-您可以使用
$elemMatch
投影操作符将类似s
的数组字段限制为单个匹配元素,但不能使用find
删除文档的s
级别
db.test.find({}, {_id: 0, s: {$elemMatch: {sec: '52b9830cadaa9d2732000005'}}})
产出:
{
"s": [
{
"data": [ ],
"sec": "52b9830cadaa9d2732000005"
}
]
}
谢谢你的回复。你的回答给了我整个阵列。但我只想要数组的特定对象。如果你有任何建议,请回答我。
{
"s": [
{
"data": [ ],
"sec": "52b9830cadaa9d2732000005"
}
]
}