gpt4 book ai didi

python - 怎么说......当字段是数字时匹配......在mongodb中?

转载 作者:IT老高 更新时间:2023-10-28 13:09:33 28 4
gpt4 key购买 nike

所以我的结果中有一个名为“城市”的字段...结果已损坏,有时是实际名称,有时是数字。以下代码显示所有记录...

db.zips.aggregate([{$project : {city:{$substr:["$city",0,1]}}},{$sort : {city : 1}} ])

我需要修改此行以仅显示名称为数字(2、3、4 等)的城市的记录....我想我可以使用“$match”,但是如何?

db.zips.aggregate([{$project : {city:{$substr:["$city",0,1]}}},{$sort : {city : 1}}, {$match:{???what_to_say_here???} ]) 

“当城市是数字时匹配”怎么说?

我得到的输出看起来像这样......

    {
"city" : "A",
"_id" : "04465"
},
{
"city" : "1",
"_id" : "02821"
},
{
"city" : "0",
"_id" : "04689"
}

我正在尝试仅显示带有数字字符串的记录...这与更大的“家庭作业”问题有关,但在我通过这一点之前,我什至无法回答实际的家庭作业问题。

最佳答案

使用 $type $match 中的运算符:

db.zips.aggregate([
{$project : {city:{$substr:["$city",0,1]}}},
{$sort : {city : 1}},
{$match: {city: {$type: 16}}} // city is a 32-bit integer
]);

数字没有单一的类型值,因此您需要知道您拥有的数字类型:

32-bit integer   16
64-bit integer 18
Double 1

或者使用 $or 运算符来匹配所有类型的数字:

db.zips.aggregate([
{$project : {city:{$substr:["$city",0,1]}}},
{$sort : {city : 1}},
{$match: {$or: [{city: {$type: 1}}, {city: {$type: 16}}, {city: {$type: 18}}]}}
]);

甚至使用 $not 来匹配所有 city 不是字符串的文档:

db.zips.aggregate([
{$project : {city:{$substr:["$city",0,1]}}},
{$sort : {city : 1}},
{$match: {city: {$not: {$type: 2}}}} // city is not a string
]);

更新

要匹配 city 是数字字符串的所有文档,您可以使用正则表达式:

db.zips.aggregate([
{$project : {city:{$substr:["$city",0,1]}}},
{$sort : {city : 1}},
{$match: {city: /^\d.*$/}} // city is all digits
]);

关于python - 怎么说......当字段是数字时匹配......在mongodb中?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13409386/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com