mongodb去重
高洛峰
高洛峰 2017-05-02 09:18:56
0
2
535

现在的数据是使用爬虫抓取的。现在有些数据是重复的。
然后现在我想请教应该怎么做才能去重呢?
我想的是只要能查到相对应的name也是ok的
打个比方。我现在有个community_name字段。
我想查询一下,community_name重复次数超过1次的name列表
我应该怎么去查询。
谢谢。
文档格式:

{
    "_id" : ObjectId("5732e6f884e079abfa783703"),
    "buildings_num" : "4",
    "community_name" : "江和城",
    "address" : "新安江洋安新城,南临洋安大道、北临滨江路",
    "lat" : "29.511485",
    "building_year" : "2014年建成",
    "lng" : " 119.329673",
    "house_num" : 224,
    "id" : 84453,
    "category" : "建德商圈",
    "city" : "杭州",
    "lj_id" : "187467387072819",
    "area" : "建德",
    "average_price" : 8408,
    "property_cost" : "2 元/平米/月",
    "property_company" : "金管家",
    "volume_rate" : "1.98",
    "greening_rate" : 0.33,
    "developers" : "杭州和谐置业有限公司"
}
高洛峰
高洛峰

拥有18年软件开发和IT教学经验。曾任多家上市公司技术总监、架构师、项目经理、高级软件工程师等职务。 网络人气名人讲师,...

全員に返信(2)
刘奇

RDBMSのようなものを実現したいようですね

リーリー

正しく理解できているかわかりません。この場合、対応するアプローチは集計フレームワークを使用する必要があります。

リーリー

このクエリは、次のインデックスを使用すると結果をより速く取得できます:

リーリー

それでも、このクエリはすべてのレコードを走査するため、速度はそれほど速くありません。
実際、毎回すべてのレコードをカウントするのは無駄です。結果を取得した後にキャッシュする方法は、収集したデータをどのように使用するかによって異なります。
同じ community_name が既に存在する場合は、community_name则记录在案,比如

SELECT community_name, COUNT(*)
FROM table
GROUP BY community_name
HAVING COUNT(*) > 1

这样就可以直接得到一个community_name_stat集合得到每个community_name のように記録することをお勧めします。 リーリー

この方法で、community_name_stat コレクションを直接取得して、各 community_name が出現する回数を取得できます。もちろん、最終的なアプローチはニーズによって異なります。 MongoDB は非常に柔軟であり、これがリレーショナル データベースと異なる重要な機能の 1 つです。 MongoDB のさまざまな機能を理解し、ニーズに合わせて最もコスト効率の高いソリューションをカスタマイズすることは、MongoDB を使用する際の最大の課題の 1 つです。 🎜
いいねを押す +0
phpcn_u1582

正しく理解していれば、upsert を直接使用できます。システムに同じ条件のレコードが既にある場合は、それを更新するだけで、そうでない場合は、新しいレコードを作成します。

db.collection.update(query, update, {upsert: True, multi: <boolean>})

multi が true に設定されている場合は、複数のレコードを変更することもできます。

いいねを押す +0
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート
私たちについて 免責事項 Sitemap
PHP中国語ウェブサイト:福祉オンライン PHP トレーニング,PHP 学習者の迅速な成長を支援します!