如何加入mongodb?

时间:2018-01-20 04:07:07

标签: mongodb join mongoose aggregate lookup

我仍在尝试掌握mongodb查询的工作原理。也许这是重复的,但我找不到确切的情况。

我的脑子里有这个问题

SELECT
 a.f1,
 a.f2,
 b.f1,
 b.f3 -- or select the all column of b (b.*)
FROM tableA as a
inner join tableB as b
 on(a.f1 = b.f1)
WHERE some conditions here

我能想到的最接近的解决方案是使用$lookup,但无法使其正确。

并尝试过这样。

collectionA.aggregate({
 $lookup: {
  from: 'collectionB',
  localField: 'f1',
  foreignField: 'f1',
  as: 'b'
 }
})
// But I don't know what next here.
// I tried to combine the syntax of find query but with no avail.

请帮助谢谢。

修改

其实我像这样查询tableA

tableA.find({
 $and: [{
  schedule: {
   $gte: new Date(from),
   $lte: new Date(to)
  }
 }, {
  f1: {
   $in: some values here
  }
 }]
})

我想从表中添加数据。

1 个答案:

答案 0 :(得分:0)

现在就开始工作了。

collectionA.aggregate([{
 $match: {
  $and: [{
   schedule: {
    $gte: new Date(from),
    $lte: new Date(to)
   }
  }, {
   f1: {
    $in: some values
   }
  }]
 }
}, {
 $lookup: {
  from: 'collectionB',
  localField: 'f1',
  foreignField: 'f1',
  as: 'b'
 }
}, {
 $project: {...}
}])

感谢。