仅查询嵌套的Mongoose对象中的一项

sauutmhj  于 2022-10-22  发布在  Go
关注(0)|答案(1)|浏览(154)

我当前正在尝试查询Mongoose对象中的项

  1. module.exports.getAvatarsByLastMessages = function(messages, callback){
  2. const query = {lastMessage: {with: messages}}
  3. User.find(query, 'avatar username', callback);
  4. };

然而,它不起作用,因为我的lastMessage中有多个项,如下所示

  1. {lastMessage: {with: 'foo', identifier:'bar', message:'lol'}}

我如何仅从“with:”对象查询我想要的内容?我的查询只对具有一个项的其他函数起作用,并且通过在标识符和消息对象中硬编码来使相同的函数起作用。
我不太确定如何处理这个问题,我甚至不确定从哪里开始搜索或搜索堆栈溢出问题。

0vvn1miw

0vvn1miw1#

"Query on Embedded/Nested Documents" documentation page就是您要在这里寻找的。
第一节描述了在查询 predicate 中使用文档的当前语法行为。正如您所观察到的,语义不是您想要的:
整个嵌入文档上的相等匹配需要与指定的<value>文档完全匹配,包括字段顺序。
相反,您希望使用点表示法,例如:

  1. const query = {'lastMessage.with': messages}}

Playground demonstration here.

相关问题