基本上,我设法从集合中返回所有对象。如何返回单个元素,例如以findOne({_ id:" 5e82d378527bb420a4001aaf ")
?
我知道如何使用 $match,但这会返回各种结果。
let _id="5e82d378527bb420a4001aaf"
Noticia.aggregate([
{
$addFields: {
like: {
$cond: [{ $in: [_id, "$likes"] }, true, false]
},
dislike: {
$cond: [{ $in: [_id, "$dislikes"] }, true, false]
}
}
}
], (err, noticia) => {
// console.log(trans);
if (err) {
return res.status(400).json({
ok: false,
err
});
}
return res.status(200).json({
ok: true,
data: noticia
});
})
考虑一个样本names
集合:
{ _id: 1, name: "Jack", favoriteColor: "blue" },
{ _id: 2, name: "James", favoriteColor: "red" },
{ _id: 3, name: "John", favoriteColor: "blue" }
并使用以下三个查询findOne
:
db.names.findOne( { _id: 1 } )
db.names.findOne()
db.names.findOne( { favoriteColor : "blue" } )
三个查询的结果相同:
{ "_id" : 1, "name" : "Jack", "favoriteColor" : "blue" }
分别使用聚合的等效查询如下,结果相同:
db.names.aggregate( [
{ $match: { _id: 1 } },
] )
db.names.aggregate( [
{ $limit: 1 }
] )
db.names.aggregate( [
{ $match: { "favoriteColor" : "blue" } },
{ $limit: 1 }
] )
返回一个满足集合或视图上指定查询条件的文档。如果多个文档满足查询,则该方法按照反映磁盘上文档顺序的自然顺序返回第一个文档。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句