gpt4 book ai didi

node.js - 是否可以使用 mongoDB 和 Node.js 返回多个子文档?

转载 作者:太空宇宙 更新时间:2023-11-03 22:43:47 25 4
gpt4 key购买 nike

我目前的架构如下:

var User = new Schema({
id: String,
firstName: String,
lastName: String,
password: String,
username: String,
position: [{
title: String,
location: String,
start: String,
term:Number,
description:String,
date: {type: Date, default: Date.now}
}]

});

我有两个用户,每个用户都有两个嵌入的职位文档。

用户1:

"position" : [ 
{
"title" : "Web Developer",
"location" : "Dublin",
"start" : "May 2017",
"term" : 6,
"description" : " Lorem ipsum dolor sit amet, consectetur adipiscing elit. Vivamus quis erat vitae dsit amet, consectetur adipiscing elit. Vivamus quis erat vitae dolor tempus euismod non in mi",
"_id" : ObjectId("58d6b7e11e793c9a506ffe0f")
},
{
"description" : "description",
"term" : 12,
"start" : "may 2018",
"location" : "Dublin",
"title" : "Web Developer",
"_id" : ObjectId("58d6af99e4318f4703ceb2af")
}
],

用户2:

 "position" : [ 
{
"title" : "Software Engineer",
"location" : "Cork",
"start" : "May 2017",
"term" : 9,
"description" : " Lorem ipsum dolor sit amet, consectetur adipiscing elit. Vivamus quis erat vitae dolor tempus euismod non in miorem ipsum dolor sit amet, consectetur adipiscing elit. Vivamus quis erat vitae dolor tempus euismod non in mi",
"_id" : ObjectId("58d6af99e4318f4703cebsju7")

},
{
"title" : "Web Developer",
"location" : "Waterford",
"start" : "May 2017",
"term" : 6,
"description" : " Lorem ipsum dolor sit amet, consectetur adipiscing elit. Vivamus quis erat vitae dsit amet, consectetur adipiscing elit. Vivamus quis erat vitae dolor tempus euismod non in mi",
"_id" : ObjectId("58d6af99e4318f4703ceb6aj")
}
],

我的查询如下所示:

  app.post('/search', function (req, res) {

var position = new RegExp(req.body.position, 'i');

User.find({'position.title': position}, 'position.$').exec(function (err, result) {
console.log(result);
res.send({ results: result });
}); //


});

当搜索“Web Developer”时,这将返回第一个用户中的第一个“Web Developer”条目,以及第二个用户中的“Web Developer”条目,但我似乎无法返回任何后续条目,我只是我想知道我只能返回一个与每个用户匹配的子文档,这是否是 MongoDB 的问题?还是我的代码有问题?

返回的对象如下所示,结果对象返回两个用户,每个用户有一个位置对象,但应该有3个。 enter image description here

假设我在位置数组中有一个数组,我将如何访问它?

我当前的代码:

  app.get('/applied', function(req, res){
User.aggregate(
{$unwind : "$position"},
{$unwind : "$position.applied"},
{$match:{'position.applied.candidate_id': "58dc2bd4e7208a3ea143959e"}}).exec(function (err, result) {
console.log(result);
});
res.render('applied', { title: 'applied'});
});

我的架构:

 position: [{
title: String,
location: String,
start: String,
term:Number,
description:String,
date: {type: Date, default: Date.now},
applied:[{
candidate_id: String,
name: String
}],
}],

最佳答案

您可以使用 $unwind 来实现此目的,它会从集合中获取多个条目,这与元素匹配或“.”不同。仅返回第一个匹配数据的运算符

User.aggregate(
{$unwind : "$position"},
{$match:{'position.title': position}}).exec(function (err, result) {
console.log(result);
res.send({ results: result });
});

关于node.js - 是否可以使用 mongoDB 和 Node.js 返回多个子文档?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43073560/

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