我当前正在尝试查询Mongoose对象中的项
module.exports.getAvatarsByLastMessages = function(messages, callback){
const query = {lastMessage: {with: messages}}
User.find(query, 'avatar username', callback);
};
然而,它不起作用,因为我的lastMessage中有多个项,如下所示
{lastMessage: {with: 'foo', identifier:'bar', message:'lol'}}
我如何仅从“with:”对象查询我想要的内容?我的查询只对具有一个项的其他函数起作用,并且通过在标识符和消息对象中硬编码来使相同的函数起作用。
我不太确定如何处理这个问题,我甚至不确定从哪里开始搜索或搜索堆栈溢出问题。
1条答案
按热度按时间0vvn1miw1#
"Query on Embedded/Nested Documents" documentation page就是您要在这里寻找的。
第一节描述了在查询 predicate 中使用文档的当前语法行为。正如您所观察到的,语义不是您想要的:
整个嵌入文档上的相等匹配需要与指定的
<value>
文档完全匹配,包括字段顺序。相反,您希望使用点表示法,例如:
Playground demonstration here.