gpt4 book ai didi

node.js - 如何在mongodb中使用node.js搜索数组中的元素?

转载 作者:行者123 更新时间:2023-12-03 01:57:26 25 4
gpt4 key购买 nike

在mongodb中有一个如下所示的文档,

{
"_id": ObjectId("57443657ee5b5ccc30c4e6f8"),
"name": "Kevin",
"email": "kevinwarn@gmail.com",
"password": "$2a$13$iZ0PhuY6VlBF6qC9rUredrG39Fw5pEKkIh.VCLiGsLPZMKYveyzey",
"mobile": "9980896745",
"__v": NumberInt(0),
"ocassionTypes": [
{
"occasiontype": "Anniversary",
"date": "2016-05-30T18:30:00.000Z"
},
{
"occasiontype": "Donation",
"date": "2016-07-24T18:30:00.000Z"
},
{
"occasiontype": "House Warming",
"date": "2016-09-21T18:30:00.000Z"
}
]
}

所以我在Nodejs中编写了一个查询来搜索ocassionTypes数组中的occasiontype元素,如下所示,

router.post('/find-registry', function(req, res){
var uEmail = req.body.email;
var uocType = req.body.userOccasion;
var findUserId = function(db, callback) {

var cursor =db.collection('users').find({email:uEmail, ocassionTypes: {$elemMatch: {occasiontype:uocType}}}).toArray(function(err, docs1){
if(err){
callback(new Error("Some problem"));
} else {
callback(null,docs1);
}
});
};

MongoClient.connect(config.database, function(err, db) {
assert.equal(null, err);
findUserId(db, function(err,docs1) {
db.close();
if(err) return res.json({result:null})
else
return res.json({result1:docs1});
});
});
});

使用此查询,我得到第 0 个索引元素,但如果我给出第 1 个和第 2 个元素,它总是在输出中仅显示第 0 个索引。

在前端我已经给出了如下图所示的输入。

文件.html

front end image

我的查询有问题吗?请帮我解决这个问题。

最佳答案

您的查询是正确的,但它会提供带有完整数组的匹配文档

只需在查询中添加投影

db.collection('users').find({email:uEmail, ocassionTypes: {$elemMatch: {occasiontype:uocType}}},{email:1, ocassionTypes: {$elemMatch: {occasiontype:uocType}}})

关于node.js - 如何在mongodb中使用node.js搜索数组中的元素?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37428457/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com