Hướng dẫn import objectid python - nhập python objectid

Tôi đã tạo một mã Python lấy các tweet từ bộ sưu tập Mongo có tên là Tweets. Tôi sẽ không chỉ tìm được văn bản đối tượng và thêm một đối tượng bổ sung gọi là tình cảm.

Khi tôi lặp qua các tweet và phân tích đối tượng JSON vào một chuỗi, tôi gặp lỗi:

từ pymongo.ObjectID nhập khẩu máy nhập khẩu: không có mô -đun có tên ObjectID

Do đó tôi sử dụng mã sau

import pymongo
import nltk
import json
from json import JSONEncoder
from pymongo import MongoClient
from pymongo.objectid import ObjectId

#JSON Encoder
class MongoEncoder(JSONEncoder):
    def default(self, obj, **kwargs):
        if isinstance(obj, ObjectId):
            return str(obj)
        else:            
            return JSONEncoder.default(obj, **kwargs)

#Mongo Settings
client = MongoClient()
db = client.Sentiment
Tweets = db.Tweet
TweetTraining = db.TweetTraining

#GET TEXT_TAG FROM TWEET
for tweet in Tweets.find({"lang":"nl"},{"text"}):
  print json.dumps(tweet, cls=MongoEncoder)

Tôi hy vọng rằng bạn có thể giúp tôi. Cảm ơn nhiều

Erik

Hướng dẫn này được dự định là giới thiệu để làm việc với MongoDB và Pymongo.MongoDB and PyMongo.

Điều kiện tiên quyết

Trước khi chúng tôi bắt đầu, hãy chắc chắn rằng bạn đã cài đặt phân phối pymongo. Trong vỏ Python, những điều sau đây sẽ chạy mà không gây ra ngoại lệ:PyMongo distribution installed. In the Python shell, the following should run without raising an exception:

Hướng dẫn này cũng giả định rằng một thể hiện MongoDB đang chạy trên máy chủ và cổng mặc định. Giả sử bạn đã tải xuống và cài đặt MongoDB, bạn có thể bắt đầu nó như vậy:

Tạo kết nối với Mongoclient¶

Bước đầu tiên khi làm việc với pymongo là tạo ra một

>>> client = MongoClient('localhost', 27017)
6 cho ví dụ đang chạy của Mongod. Làm như vậy thật dễ dàng:PyMongo is to create a
>>> client = MongoClient('localhost', 27017)
6 to the running mongod instance. Doing so is easy:

>>> from pymongo import MongoClient
>>> client = MongoClient()

Mã trên sẽ kết nối trên máy chủ mặc định và cổng. Chúng tôi cũng có thể chỉ định máy chủ và cổng một cách rõ ràng, như sau:

>>> client = MongoClient('localhost', 27017)

Hoặc sử dụng định dạng URI MongoDB:

>>> client = MongoClient('mongodb://localhost:27017/')

Nhận cơ sở dữ liệu

Một trường hợp duy nhất của MongoDB có thể hỗ trợ nhiều cơ sở dữ liệu độc lập. Khi làm việc với pymongo, bạn truy cập cơ sở dữ liệu bằng cách sử dụng quyền truy cập kiểu thuộc tính trên các trường hợp

>>> client = MongoClient('localhost', 27017)
6:

>>> db = client.test_database

Nếu tên cơ sở dữ liệu của bạn như vậy sử dụng quyền truy cập kiểu thuộc tính won won công việc (như

>>> client = MongoClient('localhost', 27017)
8), bạn có thể sử dụng quyền truy cập kiểu từ điển thay thế: thay vào đó:

>>> db = client['test-database']

Nhận một bộ sưu tập

Một bộ sưu tập là một nhóm các tài liệu được lưu trữ trong MongoDB và có thể được coi là tương đương với một bảng trong cơ sở dữ liệu quan hệ. Nhận một bộ sưu tập ở Pymongo hoạt động giống như nhận cơ sở dữ liệu:

>>> collection = db.test_collection

hoặc (sử dụng truy cập kiểu từ điển):

>>> collection = db['test-collection']

Một lưu ý quan trọng về các bộ sưu tập (và cơ sở dữ liệu) trong MongoDB là chúng được tạo ra một cách uể oải - không có lệnh nào ở trên thực sự đã thực hiện bất kỳ hoạt động nào trên máy chủ MongoDB. Bộ sưu tập và cơ sở dữ liệu được tạo khi tài liệu đầu tiên được chèn vào chúng.

Các tài liệu¶

Dữ liệu trong MongoDB được thể hiện (và lưu trữ) bằng các tài liệu kiểu JSON. Trong Pymongo, chúng tôi sử dụng từ điển để đại diện cho các tài liệu. Ví dụ, từ điển sau đây có thể được sử dụng để đại diện cho một bài đăng trên blog:

>>> import datetime
>>> post = {"author": "Mike",
...         "text": "My first blog post!",
...         "tags": ["mongodb", "python", "pymongo"],
...         "date": datetime.datetime.utcnow()}

Lưu ý rằng các tài liệu có thể chứa các loại python gốc (như các trường hợp

>>> client = MongoClient('localhost', 27017)
9) sẽ được tự động chuyển đổi sang và từ các loại BSON thích hợp.

Chèn một tài liệu

Để chèn tài liệu vào một bộ sưu tập, chúng tôi có thể sử dụng phương thức

>>> client = MongoClient('mongodb://localhost:27017/')
0:

>>> posts = db.posts
>>> post_id = posts.insert_one(post).inserted_id
>>> post_id
ObjectId('...')

Khi một tài liệu được chèn một khóa đặc biệt,

>>> client = MongoClient('mongodb://localhost:27017/')
1, sẽ tự động thêm vào nếu tài liệu không có khóa
>>> client = MongoClient('mongodb://localhost:27017/')
1. Giá trị của
>>> client = MongoClient('mongodb://localhost:27017/')
1 phải là duy nhất trong bộ sưu tập.
>>> client = MongoClient('mongodb://localhost:27017/')
0 Trả về một ví dụ là
>>> client = MongoClient('mongodb://localhost:27017/')
5. Để biết thêm thông tin về
>>> client = MongoClient('mongodb://localhost:27017/')
1, hãy xem tài liệu trên _ID.

Sau khi chèn tài liệu đầu tiên, bộ sưu tập bài viết đã thực sự được tạo trên máy chủ. Chúng tôi có thể xác minh điều này bằng cách liệt kê tất cả các bộ sưu tập trong cơ sở dữ liệu của chúng tôi:

>>> from pymongo import MongoClient
>>> client = MongoClient()
0

Nhận một tài liệu duy nhất với ________ 37¶

Loại truy vấn cơ bản nhất có thể được thực hiện trong MongoDB là

>>> client = MongoClient('mongodb://localhost:27017/')
7. Phương thức này trả về một tài liệu duy nhất khớp với truy vấn (hoặc
>>> client = MongoClient('mongodb://localhost:27017/')
9 nếu không có khớp). Nó rất hữu ích khi bạn biết chỉ có một tài liệu phù hợp hoặc chỉ quan tâm đến trận đấu đầu tiên. Ở đây chúng tôi sử dụng
>>> client = MongoClient('mongodb://localhost:27017/')
7 để lấy tài liệu đầu tiên từ bộ sưu tập bài viết:

>>> from pymongo import MongoClient
>>> client = MongoClient()
1

Kết quả là một từ điển phù hợp với cái mà chúng tôi đã chèn trước đó.

Ghi chú

Tài liệu được trả về chứa

>>> client = MongoClient('mongodb://localhost:27017/')
1, được tự động thêm vào chèn.

>>> client = MongoClient('mongodb://localhost:27017/')
7 cũng hỗ trợ truy vấn về các yếu tố cụ thể mà tài liệu kết quả phải khớp. Để giới hạn kết quả của chúng tôi đối với một tài liệu với tác giả, Mike Mike, chúng tôi làm:

>>> from pymongo import MongoClient
>>> client = MongoClient()
2

Nếu chúng ta cố gắng với một tác giả khác, như El Eliot, chúng ta sẽ không nhận được kết quả:

>>> from pymongo import MongoClient
>>> client = MongoClient()
3

Truy vấn bởi Objectid¶

Chúng ta cũng có thể tìm thấy một bài đăng bởi

>>> db = client.test_database
3 của nó, trong ví dụ của chúng ta là một ObjectID:

>>> from pymongo import MongoClient
>>> client = MongoClient()
4

Lưu ý rằng một ObjectID không giống như biểu diễn chuỗi của nó:

>>> from pymongo import MongoClient
>>> client = MongoClient()
5

Một nhiệm vụ phổ biến trong các ứng dụng web là lấy một ObjectID từ URL yêu cầu và tìm tài liệu phù hợp. Nó cần thiết trong trường hợp này để chuyển đổi ObjectID từ một chuỗi trước khi chuyển nó sang

>>> db = client.test_database
4:convert the ObjectId from a string before passing it to
>>> db = client.test_database
4:

>>> from pymongo import MongoClient
>>> client = MongoClient()
6

Chèn số lượng lớn

Để làm cho việc truy vấn thú vị hơn một chút, hãy để Lừa chèn thêm một vài tài liệu. Ngoài việc chèn một tài liệu duy nhất, chúng tôi cũng có thể thực hiện các hoạt động chèn số lượng lớn, bằng cách chuyển một danh sách làm đối số đầu tiên cho

>>> db = client.test_database
5. Điều này sẽ chèn từng tài liệu trong danh sách, chỉ gửi một lệnh duy nhất đến máy chủ:

>>> from pymongo import MongoClient
>>> client = MongoClient()
7

Có một vài điều thú vị cần lưu ý về ví dụ này:

  • Kết quả từ

    >>> db = client.test_database
    
    5 hiện trả về hai trường hợp
    >>> db = client.test_database
    
    7, một cho mỗi tài liệu được chèn.

  • >>> db = client.test_database
    
    8 có một hình dạng khác nhau khác với các bài đăng khác - không có trường
    >>> db = client.test_database
    
    9 và chúng tôi đã thêm một trường mới,
    >>> db = client['test-database']
    
    0. Đây là những gì chúng tôi muốn nói khi chúng tôi nói rằng MongoDB không có lược đồ.

Truy vấn cho nhiều hơn một tài liệu

Để nhận được nhiều hơn một tài liệu duy nhất là kết quả của một truy vấn, chúng tôi sử dụng phương thức

>>> db = client['test-database']
1.
>>> db = client['test-database']
1 trả về một ví dụ
>>> db = client['test-database']
3, cho phép chúng tôi lặp lại tất cả các tài liệu phù hợp. Ví dụ: chúng ta có thể lặp lại mọi tài liệu trong bộ sưu tập
>>> db = client['test-database']
4:

>>> from pymongo import MongoClient
>>> client = MongoClient()
8

Giống như chúng tôi đã làm với

>>> client = MongoClient('mongodb://localhost:27017/')
7, chúng tôi có thể chuyển một tài liệu cho
>>> db = client['test-database']
1 để hạn chế kết quả trả lại. Ở đây, chúng tôi chỉ nhận được những tài liệu đó có tác giả là Mike Mike:

>>> from pymongo import MongoClient
>>> client = MongoClient()
9

Tính toán

Nếu chúng ta chỉ muốn biết có bao nhiêu tài liệu khớp với một truy vấn, chúng ta có thể thực hiện thao tác

>>> db = client['test-database']
7 thay vì truy vấn đầy đủ. Chúng tôi có thể nhận được tất cả các tài liệu trong một bộ sưu tập:

>>> client = MongoClient('localhost', 27017)
0

hoặc chỉ trong số các tài liệu phù hợp với một truy vấn cụ thể:

>>> client = MongoClient('localhost', 27017)
1

Truy vấn phạm vi

MongoDB hỗ trợ nhiều loại truy vấn nâng cao khác nhau. Ví dụ, hãy thực hiện truy vấn trong đó chúng tôi giới hạn kết quả cho các bài đăng cũ hơn một ngày nhất định, nhưng cũng sắp xếp kết quả của tác giả:

>>> client = MongoClient('localhost', 27017)
2

Ở đây chúng tôi sử dụng toán tử

>>> db = client['test-database']
8 đặc biệt để thực hiện truy vấn phạm vi và cũng gọi
>>> db = client['test-database']
9 để sắp xếp kết quả của tác giả.

Lập chỉ mục

Thêm chỉ mục có thể giúp tăng tốc một số truy vấn nhất định và cũng có thể thêm chức năng bổ sung vào truy vấn và lưu trữ tài liệu. Trong ví dụ này, chúng tôi sẽ trình bày cách tạo một chỉ mục duy nhất trên khóa từ chối các tài liệu có giá trị cho khóa đó đã tồn tại trong chỉ mục.

Đầu tiên, chúng tôi sẽ cần tạo chỉ mục:

>>> client = MongoClient('localhost', 27017)
3

Lưu ý rằng chúng tôi có hai chỉ mục ngay bây giờ: một chỉ mục trên

>>> db = client.test_database
3 mà MongoDB tạo tự động và phần còn lại là chỉ mục trên
>>> collection = db.test_collection
1 mà chúng tôi vừa tạo.

Bây giờ, hãy để Lừa thiết lập một số hồ sơ người dùng:

>>> client = MongoClient('localhost', 27017)
4

Chỉ số ngăn chúng ta chèn một tài liệu có

>>> collection = db.test_collection
1 đã có trong bộ sưu tập:

>>> client = MongoClient('localhost', 27017)
5

Xem thêm

Tài liệu MongoDB về các chỉ mục