我尝试基于以下mongodb查询来查询我的mongodb集合中的一个用户:db.users.find("boxes":{"$elemMatch":{"a":"foo","b":"bar"}})
如果我直接使用mongodb进行查询,它会返回任何一个框中有a=“foo”和b=“bar”的用户。
我如何在mongoosejs中查询这个呢?我试过使用User.find().elemMatch
,但是它不起作用。看起来它只是投影结果而已。原始的mongodb查询对我来说确实有效,我只需要能够在mongoosejs中复制它。有什么想法吗?
3条答案
按热度按时间jq6vz3qz1#
这里是mongoose中的elemMatch文档。
我还没有测试过,但看起来你会想要
User.find().elemMatch("boxes", {"a":"foo","b":"bar"})
ppcbkaq52#
Tim的回答是正确的,但是如果有人对mongoose为mongo原生API上的查询生成什么感到困惑,我可以用这个来解决这个问题
6jygbczu3#
这是使用$elemMatch的正确方法。我不能测试你的确切查询,因为我没有你的模式。但有几种方法:
但是在你的例子中,你看起来像是在试图查询一个数组元素的属性。你也可以这样做: