在 Mongodb 中使用 .aggregate 相当于 findOne 什么?

yavg

基本上,我设法从集合中返回所有对象。如何返回单个元素,例如以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 }
] )


db.collection.findOne定义说 -

返回一个满足集合或视图上指定查询条件的文档。如果多个文档满足查询,则该方法按照反映磁盘上文档顺序的自然顺序返回第一个文档。

随着findOne如果没有文档发现它返回一个null但是聚合返回一个游标,您可以对结果应用游标方法

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章