请稍等 ...
×

采纳答案成功!

向帮助你的同学说点啥吧!感谢那些助人为乐的人

关于 pipeline 的问题

我有两个问题比较疑惑:

  1. 比较操作符 $gt 这些,一般是 balance: { $gt: 100 } 类似这种格式, 属性:{ 操作符: 值} ,这是之前学的。为啥在pipeline这里 可以 $gt: [ 属性 , 值 ] 这样写啊?两种方式都可以?
    图片描述
  2. 老师上节讲了aggregate 使用localField 和 foreignField 这种两个集合关联查询。这节又讲了不相关查询,我想知道,如果我使用localFiled这种关联集合字段,但是还想给查询集合添加条件,可不可以 一起使用?
    比如:
db.accounts.aggregate([
	$lookup: {
		from: xxx,
		localField: xxx,
		foreignField: xxx,
		let: { xxx: xxx},
		pipeline: {
			....
		}
	}
])

实际例子就是,我想要accounts集合的currency字段和 forex集合 的ccy字段关联,并且如果forex集合ccy字段有多个相同的USA的汇率,只是时间不同,我需要关联时间最新的那一个文档,该怎么写呢~。不知道我的意思表达清楚了没。。

正在回答

1回答

同学你好~谢谢你经过认真思考提出的问题:
1. 这是两种操作中不同的语法要求,没有太多的道理可讲,经过练习,熟练掌握之后就会比较自然了
2. $lookup操作的第一种语法,就是专门为了进行localField和foreignField的相等比较而设计的。如果你需要进行其他更复杂的比较,则需要使用$lookup的第二种语法。你可以在pipeline中将相等比较作为一个条件列出,这和pipeline中的其他条件没有什么区别。你先自己试着写一下命令语句,好吗?

1 回复 有任何疑惑可以回复我~
问题已解决,确定采纳
还有疑问,暂不采纳
意见反馈 帮助中心 APP下载
官方微信