如何从Mongodb中的用户获取数组的最新对象

时间:2019-01-05 12:06:13

标签: node.js mongodb

  

我的mongodb结构

//First user
    _id:ObjectId("12345")
    name:"prudhvi"
    authors:Array
    0:Object
    authorId:"77777"
    authortitle:"medicine"
    1:Object
    authorId:"66666"
    authortitle:"Hospital"

//second user
    _id:ObjectId("67890")
    name:"venkat"
    authors:Array
    0:Object
    authorId:"55555"
    authortitle:"Doctor"
    1:Object
    authorId:"44444"
    authortitle:"Nurse"

有人可以帮忙吗?我有两个用户,关于这一点,我只需要获取authors数组的最新对象。这里我最新的Object是1:Object,如果再添​​加一个,我需要获取所有用户数据的2:Object。

  

我试图这样,但是我正在获取authors数组的所有对象,但是我需要获取最新的对象

userRouter.post('/getAuthors', function (req, res) {
Collections.user.find(req.body.user, function (err, result) {
if (err) res.status(500).send("There was a problem finding the user");
if (result.length > 0) {
res.status(200).send(result[0].authors);
}
}).select({ "authors": 1 });
});

2 个答案:

答案 0 :(得分:1)

尝试使用此

Collections.user.find().limit(1).sort({$natural:-1})

看看$naturalcursor.sort

答案 1 :(得分:0)

在猫鼬模式中,您可以设置时间戳。当您从该架构创建对象时,它将自动设置createdAt时间戳;如果您编辑该特定对象,它将设置updatedAt时间戳。

作为示例架构,

const mongoose = require('mongoose');

const markSchema = mongoose.Schema({
    _id: mongoose.Schema.Types.ObjectId,
    mark: { type: Number },
    student: { type: String }, 
    },{
        timestamps: true
});

module.exports = mongoose.model('Mark', markSchema);

您可以设置时间戳。