2012-03-18 18 views

Trả lời

35

Bạn có thể sử dụng bất kỳ ký tự (UTF8) nào trong tên trường không phải là đặc biệt (chứa "." Hoặc bắt đầu bằng "$").

https://jira.mongodb.org/browse/SERVER-3229

https://stackoverflow.com/a/7976235/311220

Đó là nói chung tốt nhất để gắn bó với chữ viết thường với dấu gạch mặc dù.

+1

Điều gì về thông số kỹ thuật của sản phẩm? Nó sẽ không đơn giản hóa thiết kế rất nhiều nếu tên trường là mô tả đặc điểm kỹ thuật thực tế? (Ví dụ: 'Kích thước màn hình': '26 inch'') – Dor

+3

Không nhất thiết, @Dor - bạn muốn có một chút linh hoạt giữa giao diện người dùng và cơ sở dữ liệu của bạn (không có gì thay đổi như một khách hàng: "Đợi đã, tôi muốn nó nói 'Kích thước Hiển thị', không phải 'Kích thước Màn hình' "). Và tất nhiên, có cả một phần quốc tế hóa của câu đố, đòi hỏi phải tách nó quá. Nhân tiện, khi Acorn nói 'bất kỳ UTF8' nào, bao gồm không gian, vì vậy bạn hoàn toàn OK ở đó, nếu bạn muốn. –

+0

Làm cách nào để xử lý các từ được gắn camel như 'userDetails'? Điều này có hợp lệ không? –

1

Một cái gì đó khác để tìm ra là bạn có thể đặt tên thuộc tính được gọi là "truy vấn" nhưng sau đó sử dụng toán tử truy vấn trên đó, làm cho nó khó xử khi thực hiện một số lượng lớn truy vấn.

Ví dụ:

Chèn tài liệu với một tài sản mang tên

db.coll.insert({ query: 'foo' }); 

Bình đẳng truy vấn hoạt động:

db.coll.findOne({ query: 'foo' });  

Không bằng ($ ne) không:

db.coll.findOne({ query: { $ne: 'bar' } }); 
+0

Điểm tốt. Nhưng bạn vẫn có thể thực hiện truy vấn đó dưới dạng 'db.coll.findOne ({query: {query: {$ ne: 'bar'}}})'. Vì vậy, nó không phải là không thể, nhưng nó là vụng về. – JohnnyHK

+0

Cảm ơn, tôi đã không nhận ra điều đó là không thể cho đến sau khi tôi đăng bài này. Chắc chắn là khó xử hơn. – Dave

+1

Tính đến thời điểm 3.2 (phát hành cuối năm 2015) điều này đã được khắc phục. –

Các vấn đề liên quan