Node.js 按对象id排列的数组中的Mongodb findone文档
通过Node.js 按对象id排列的数组中的Mongodb findone文档,node.js,mongodb,mongoose,Node.js,Mongodb,Mongoose,通过objectid,我只能获得一张照片吗?我只需要得到一个图片细节,从一个职位的照片,但我得到的是所有的职位照片 这是我的数据库结构 这是我的代码: Post.findOne({ $and: [ { photo: { $elemMatch: { _id: id } } } ] }).exec((err, post) => { if (err) { return res.status(400).json({ error: err }); }
objectid
,我只能获得一张照片吗?我只需要得到一个图片细节,从一个职位的照片,但我得到的是所有的职位照片
这是我的数据库结构
这是我的代码:
Post.findOne({
$and: [
{ photo: { $elemMatch: { _id: id } } } ]
}).exec((err, post) => {
if (err) {
return res.status(400).json({ error: err });
}
req.post = post;
console.log(req.post);
next();
});
Post.find(
{},
{
_id: 0,
photo: { $elemMatch: { _id: id } }
}
)
.lean()
.exec();
我在req.post中得到的只是[]
提前感谢您可以尝试使用聚合而不是findOne:
也许不是最好的,但单张照片数据是可以实现的。您可以尝试使用聚合而不是findOne: 可能不是最好的,但是可以实现单个照片数据。投影操作符提供了一种更改返回文档的方法,在这里,再加上使用第二个参数,即投影将实现这一点
Post.find(
{},
{
_id: 0,
photo: { $elemMatch: { _id: id } }
}
);
这将为lean文档提供承诺:.lean().exec()
:
Post.findOne({
$and: [
{ photo: { $elemMatch: { _id: id } } } ]
}).exec((err, post) => {
if (err) {
return res.status(400).json({ error: err });
}
req.post = post;
console.log(req.post);
next();
});
Post.find(
{},
{
_id: 0,
photo: { $elemMatch: { _id: id } }
}
)
.lean()
.exec();
注意:$elemMatch
行为是返回photo
的id
匹配的第一个文档。投影操作符提供了一种更改返回文档的方法,在这里,再加上使用第二个参数projection将实现这一点
Post.find(
{},
{
_id: 0,
photo: { $elemMatch: { _id: id } }
}
);
这将为lean文档提供承诺:.lean().exec()
:
Post.findOne({
$and: [
{ photo: { $elemMatch: { _id: id } } } ]
}).exec((err, post) => {
if (err) {
return res.status(400).json({ error: err });
}
req.post = post;
console.log(req.post);
next();
});
Post.find(
{},
{
_id: 0,
photo: { $elemMatch: { _id: id } }
}
)
.lean()
.exec();
注意:
$elemMatch
行为是返回photo
的id
匹配的第一个文档。如果您想通过id获取照片,无论它是什么帖子,您都可以在搜索条件中执行{'post.photo.\u id':id}
。是否可以通过PhotoObjectId从照片中获取1?我终于得到了这个[{photo”:[{“\u id”:“5d7dd20185251921882e2ba1”,“data”:“,”contentType“}]}]现在我的问题是我无法获得contentType。post.photo上未定义如果您想通过id获取照片,无论它是什么帖子,您都可以在搜索条件中执行{'post.photo.\u id':id}
,我仍然可以获取所有照片。通过照片对象id只能从照片中获取1吗?我终于得到了这个[{“照片”:[{“\u id”:“5D7DD20185251921882EBA1”,“数据”:“contentType”:“}]}]现在我的问题是我无法获取contentType。post.photoIt上未定义它给了我这个[{photo:[[Object]]}]。我找不到contentType@kaks该对象应包含所有属性。您可以尝试使用.lean().exec()
。它给了我这个[{photo:[[Object]]}]。我找不到contentType@kaks该对象应包含所有属性。您可以尝试使用.lean().exec()
。