MongoDB:如何确定$in是否是对象而不是数组
假设我有一个ID数组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",
[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
。