Hướng dẫn dùng group mongodb python

Để tạo kết nối giữa ngôn ngữ lập trình Python và cơ sở dữ liệu MongoDB, trước tiên chúng ta cần cài đặt trình điều khiển pymongo. Ở đây, chúng tôi đang tạo một ví dụ kết nối với cơ sở dữ liệu và thực hiện các hoạt động cơ sở dữ liệu.

Các bài viết liên quan:

Ví dụ này bao gồm các bước sau:

  1. Install Driver
  1. Tạo File Python
from pymongo import MongoClient # import mongo client to connect  
import pprint  
# Creating instance of mongoclient  
client = MongoClient()  
# Creating database  
db = client.testDB  
employee = {"id": "101",  
"name": "Peter",  
"profession": "Software Engineer",  
}  
# Creating document  
employees = db.employees  
# Inserting data  
employees.insert_one(employee)  
# Fetching data  
pprint.pprint(employees.find_one())  
  1. Thực thi tập lệnh Python
  1. Nhập vào Mongo Shell

Bây giờ, hãy nhập vào trình bao cơ sở dữ liệu MongoDB để xem cơ sở dữ liệu và bộ sưu tập đã tạo.

Chúng ta có thể sử dụng lệnh sau để nhập vào cơ sở dữ liệu.

  1. Kiểm tra cơ sở dữ liệu

Lệnh sau được sử dụng để hiển thị cơ sở dữ liệu có sẵn.

  1. Kiểm tra Collection

Lệnh sau được sử dụng để hiển thị bộ sưu tập có sẵn vào cơ sở dữ liệu.

  1.  Access Records

Chúng tôi có thể xem các bản ghi được lưu trữ trong bộ sưu tập cụ thể. Lệnh sau được sử dụng để hiển thị bản ghi.

Kết nối mongodb MongoDB Python 6

Để tạo kết nối giữa ngôn ngữ lập trình Python và cơ sở dữ liệu MongoDB, trước tiên chúng ta cần cài đặt trình điều khiển pymongo. Ở đây, chúng tôi đang tạo một ví dụ kết nối với cơ sở dữ liệu và thực hiện các hoạt động cơ sở dữ liệu.

Các bài viết liên quan:

Ví dụ này bao gồm các bước sau:

  1. Install Driver
  1. Tạo File Python

from pymongo import MongoClient # import mongo client to connect  
import pprint  
# Creating instance of mongoclient  
client = MongoClient()  
# Creating database  
db = client.testDB  
employee = {"id": "101",  
"name": "Peter",  
"profession": "Software Engineer",  
}  
# Creating document  
employees = db.employees  
# Inserting data  
employees.insert_one(employee)  
# Fetching data  
pprint.pprint(employees.find_one())  

  1. Thực thi tập lệnh Python
  1. Nhập vào Mongo Shell

Bây giờ, hãy nhập vào trình bao cơ sở dữ liệu MongoDB để xem cơ sở dữ liệu và bộ sưu tập đã tạo.

Chúng ta có thể sử dụng lệnh sau để nhập vào cơ sở dữ liệu.

  1. Kiểm tra cơ sở dữ liệu

Lệnh sau được sử dụng để hiển thị cơ sở dữ liệu có sẵn.

  1. Kiểm tra Collection

Lệnh sau được sử dụng để hiển thị bộ sưu tập có sẵn vào cơ sở dữ liệu.

  1.  Access Records

Chúng tôi có thể xem các bản ghi được lưu trữ trong bộ sưu tập cụ thể. Lệnh sau được sử dụng để hiển thị bản ghi.

Kết nối mongodb MongoDB Python 6

tôi đã cố gắng sử dụng $ cond trong $ match ở một trong các giai đoạn của tổng hợp như được hiển thị bên dưới:

{ "$match" : { 
  "field1" : { 
                "$cond" : {
                   "if" : { "$eq" : [ "$id" , 1206]},
                   "then" : 0,
                   "else" : 1545001200
                }
             }, 
  "field2" : value2 }}

Nhưng tôi gặp lỗi này:

Error:
Assert: command failed: {
"ok" : 0,
"errmsg" : "unknown operator: $cond",
"code" : 2,
"codeName" : "BadValue"
} : aggregate failed

Phiên bản mongodb là 3.4.4. Bất kỳ ý tưởng về vấn đề này?

  • python
  • mongodb
  • aggregation-framework

5 hữu ích 4 bình luận 3.1k xem chia sẻ

answer

2

Bạn chỉ cần nhập lại logic một chút.

{ $match: { $expr: {
    $or: [
        { $and: [
            { $eq: [ "$id", 1206 ] },
            { $eq: [ "$field1", 0 ] }
        ]},
        { $and: [
            { $ne: [ "$id", 1206 ] },
            { $eq: [ "$field1", 1545001200 ] }
        ]},
    ],
}}}

Về mặt logic, hai câu lệnh tương đương nhau:

  • Khớp tài liệu bằng cách kiểm tra field1 == 0nếu id == 1206, nếu không, khớp với tài liệu bằng cách kiểm trafield1 == 1545001200
  • Khớp tài liệu nếu ( id == 1206field1 == 0) hoặc ( id != 1206field1 == 1545001200).

2 hữu ích 0 bình luận chia sẻ

answer

0

Đối với những người gặp điều này sau đó trên đường:

Điều này sẽ không hoạt động cho 3.4.4. Nhưng trong MongoDB 3.6, họ đã giới thiệu toán tử $ expr cho phép bạn sử dụng $ cond và các phép toán khác trong truy vấn $ match.

https://docs.mongodb.com/manual/reference/operator/aggregation/match/

Để biết ví dụ, hãy xem câu trả lời của iamfrank.

Cũng như đã đề cập trong các nhận xét, bạn có thể thực hiện việc này sau này trong quá trình thực hiện. Nhưng lý tưởng nhất là bạn sẽ muốn lọc ra các kết quả ngay từ đầu bằng cách sử dụng $ match để cải thiện thời gian xử lý.

0 hữu ích 3 bình luận chia sẻ

Đăng nhập để trả lời câu hỏi

Có thể bạn quan tâm