MongoDB:如何确定$in是否是对象而不是数组

MongoDB:如何确定$in是否是对象而不是数组,mongodb,object,find,Mongodb,Object,Find,假设我有一个ID数组 [1, 2, 3] 这些记录呢 {"_id":"1", "tableName":"users", "recordId":{"id":"1"}, "__v":0} {"_id":"2", "tableName":"users",

假设我有一个ID数组

[1, 2, 3]
这些记录呢

{"_id":"1",
 "tableName":"users",
 "recordId":{"id":"1"},
 "__v":0}

{"_id":"2",
 "tableName":"users",
 "recordId":{"id":"2"},
 "__v":0}

现在我想查找上面的ids数组中存在哪个recordId.id的记录我该怎么做?正如您在这里看到的问题,recordId不是数组,因此我可以直接使用
$in

$in接受一个值数组来访问它。它不要求数据库中的字段值为数组类型(尽管它也适用于存储的数组值)。您的用例由$in处理。

$in接受一个值数组。它不要求数据库中的字段值为数组类型(尽管它也适用于存储的数组值)。您的用例由$in处理

  • 使用运算符将
    recordId.id
    转换为整数
  • 使用运算符检查
    id
    数组中是否存在
    recordId.id
  • 试试这个:

    让id=[1,2,3];
    db.records.find({
    $expr:{
    $in:[{$toInt:$recordId.id},id]
    }
    })
    
  • 使用运算符将
    recordId.id
    转换为整数
  • 使用运算符检查
    id
    数组中是否存在
    recordId.id
  • 试试这个:

    让id=[1,2,3];
    db.records.find({
    $expr:{
    $in:[{$toInt:$recordId.id},id]
    }
    })
    
    解决这个问题的简单方法是:

    db.collection.find({ "recordId.id": { $in: arr_of_ids} });
    

    请注意,由于在给定的记录中,ID是以字符串形式给出的,因此必须传递字符串ID数组。

    简单的解决方案是:

    db.collection.find({ "recordId.id": { $in: arr_of_ids} });
    

    请注意,由于在给定的记录中,id是作为字符串提供的,因此必须传递字符串id数组。

    const transQuery={tableName:table,“recordId.id”:{$in:[ids]},entityId:entityId}可以这样实现吗?不。在您的情况下,您不能使用它,因为您需要先将
    recordId.id
    转换为
    int
    const transQuery={tableName:table,“recordId.id”:{$In:[id]},entityId:entityId}
    可以这样实现吗?不可以。在您的情况下,您不能使用它,因为您需要先将
    recordId.id
    转换为
    int