当前位置: 首页 > 知识库问答 >
问题:

与Mongoose中其他查询字段相结合的elemMatch

邴兴为
2023-03-14
[{
    "_id": "529532bee0ea703842000003",
    "patientId": "123",
    "name": {
        "firstName": "John",
        "family": "Smith"
    },
    "diet": [{
        "_id": "1",
        "mealtType": "Break Fast",
        "timeofMeal": "2013-11-12T03:05:06.000Z",
        "status": "I",
        "calorie": {
            "value": 500,
            "unit": "cals"
        }
    },
    {
        "_id": "1",
        "mealtType": "Break Fast",
        "timeofMeal": "2013-11-12T03:05:06.000Z",
        "status": "A",
        "calorie": {
            "value": 550,
            "unit": "cals"
        }
    }]
}]
query.where('patientId', 123)
     .where('diet').elemMatch(function(elem) {
    elem.where('_id', 1)
    elem.where('status', 'A')
})
Mongoose: patients.find({ diet: { '$elemMatch': { _id: '1', status: 'A' } }, patientId: '123' })

我只能通过包装每个where条件{'patient id':'123'},{'diet':{$elemmatch:{'status':'a'}}}来使它在Mongo shell中工作。

db.patients.find({'patientId':'123'},{'diet' : { $elemMatch : {'status':'A'} }} ).pretty() // works fine 

我如何强制Mongoose将每个查询字段括在花括号中或任何其他想法中?

共有1个答案

江向阳
2023-03-14

在有效的查询中,$elemmatch对象不是另一个查询条件,而是find的输出字段选择(即投影)参数。

要在Mongoose中执行同样的操作,您可以执行如下操作:

PatientsModel.find({patientId: '123'}, {diet: {$elemMatch: {'status': 'A'}}}, cb)

PatientsModel
    .where('patientId', '123')
    .select({diet: {$elemMatch: {'status': 'A'}})
    .exec(cb);
 类似资料:
  • 如何在输出桶中添加名为“agency\u name”的新密钥。 我正在运行一个聚合代码,如下所示 我会把它放出来 在显示时,我需要显示代理名称、代码和doc_count 如何修改聚合查询,以便获得以下格式。我是ElasticSearch新手,不知道如何修复此问题 ElasticSearch中的示例数据(分析字段)

  • 问题内容: 我不太喜欢MySQL,但是我只需要声明一下,非常感谢您的帮助。 我有两个表:“用户”和“得分” 这是“用户”的结构: 这是“得分”的结构: 现在,我需要一个查询,该查询为我提供了某种高分列表。结果应包含user_id,user_name和与该用户相关的所有分数之和:我应该看起来像这样: 更好的是,如果结果按照用户在全球排名中的排名顺序进行排序,如下所示: 我尝试了这个说法 这会导致语法

  • 问题内容: 我有两个班,并有一个互相一一对应关系。这是它们的注释方式。 如您所见,是关系的所有者,并且是此双向关系的另一端。InvitedTech也与 Now 有关系,当我编写一个简单查询以获取所有排期时,它总共触发三个查询。第一个让我得到结果,但是触发了另外两个查询。 查询所有航班(这是我唯一需要的航班) 通过InvitedTech和Flight之间的联接进行查询 在被邀请的科技公司和酒店之间进

  • 我知道,如果没有给出ObjectID,Mongoose会自动用ObjectID填充_id字段,并且在构造模型和实例时可以覆盖_id。 猫鼬3.0.x 让我们把这个说得更具体些。想象一个,我想通过删除标题来创建漂亮的URL。为了将slug映射到Mongo对象,我对slug进行散列,并将其转换为以利用它的优点。现在,我正在寻找一个透明的方法,它允许我只通过传入来创建的实例,并自动生成和属性。

  • 问题内容: 我想在其中自动创建的ManyToMany联接表中存储一些其他信息。我将如何在Django中做到这一点? 就我而言,我有两个表:“雇员”和“项目”。我要存储的是每个项目中每个员工每小时工作所获得的收入,因为这些价值并不相同。那么,我该怎么做呢? 我想到的是,不是使用方法“ ManyToManyField”,而是显式创建了一个第三类/表来存储这些新信息,并使用“ ForeignKey”方法

  • 在我的laravel 5.4应用程序中,我有一个一对多(反向)关系。有两种型号和与场景相关。 模型上的关系为: 表具有以下字段:,,,等。 表包含以下字段:,,,等。 我想要的是,搜索条件中记录的字段'vehicles.volume'的总和。 我尝试过以下几种方法: 并导致以下错误: SQLSTATE[42S22]:未找到列:“字段列表”中的1054未知列“vehicles.volume”(SQL