首页 > 解决方案 > nodeJS mongoose 如何制作一个特殊的 get crud

问题描述

这是我在 cmd 中显示的 mongodb 数据库,因为您看到有一个名为 test 的字段存在一次,而另一个时间不存在我想编写一个 get 方法来查找仅包含 imei 而没有测试的字段

router.get('/', (req, res, next) => {
    Post.find()
        .then((posts) => {
            res.json(posts);
            console.log(posts);
            console.log("ok" + JSON.stringify(req.body) + req.body.imei);
        })
        .catch(err => console.log(err))
});

这里的 get 方法向我展示了我想要自定义它的所有数据库。

 {
            "_id" : ObjectId("5eb6b927e1c2916320ab28de"),
            "imei" : {
                    "name" : "50"
            },
            "test" : {
                    "batterieState" : "0"
            },
            "__v" : 0
    }
    {
            "_id" : ObjectId("5eb6bbbc09183a3e4c833ebe"),
            "imei" : {
                    "name" : "xx"
            },
            "__v" : 0
    }
    {
            "_id" : ObjectId("5eb6bbcb09183a3e4c833ebf"),
            "imei" : {
                    "name" : ""
            },
            "__v" : 0
    }
    {
            "_id" : ObjectId("5eb6bc7809183a3e4c833ec0"),
            "imei" : {
                    "name" : "865566048694354"
            },
            "__v" : 0
    }
    {
            "_id" : ObjectId("5eb6bcc309183a3e4c833ec1"),
            "imei" : {
                    "name" : "865566048694354"
            },
            "__v" : 0
    }
    {
            "_id" : ObjectId("5eb6bd1209183a3e4c833ec2"),
            "imei" : {
                    "name" : "865566048694354"
            },
            "__v" : 0
    }
    {
            "_id" : ObjectId("5eb6bdc609183a3e4c833ec3"),
            "imei" : {
                    "name" : "865566048694354"
            },
            "__v" : 0
    }
    {
            "_id" : ObjectId("5eb6be4609183a3e4c833ec4"),
            "imei" : {
                    "name" : "xx"
            },
            "test" : {
                    "tactileState" : "0",
                    "pixelState" : "0",
                    "greyState" : "0"
            },
            "__v" : 0
    }
    {
            "_id" : ObjectId("5eb6be6609183a3e4c833ec5"),
            "imei" : {
                    "name" : "865566048694354"
            },
            "__v" : 0
    }
    {
            "_id" : ObjectId("5eb6beef09183a3e4c833ec6"),
            "imei" : {
                    "name" : "xx"
            },
            "test" : {
                    "tactileState" : "0",
                    "pixelState" : "0",
                    "greyState" : "0"
            },
            "__v" : 0
    }
    {
            "_id" : ObjectId("5eb6bf8709183a3e4c833ec7"),
            "imei" : {
                    "name" : "865566048694354"
            },
            "test" : {
                    "tactileState" : "ignore",
                    "pixelState" : "ignore",
                    "greyState" : "ignore"
            },
            "__v" : 0
    }

我需要一些帮助来正确编写此方法以仅获取仅带有 imei 且无需测试的字段。

标签: node.jsmongodbexpressmongoose

解决方案


使用此查询

Post.find({
  imei: {
    $exists: true
  },
  test: {
    $exists: false
  }
})

$exists操作员文档


推荐阅读