Tôi dường như không thể tái tạo điều này. Bạn đang sử dụng phiên bản Mongo nào? (Tôi đang sử dụng 2.1.1 trước) Dưới đây là các bước mà tôi đã thực hiện. Sau đây là từ vỏ JS:
> db.users.save({
"_id" : 1,
"pic" : {
"id" : "4f1e1ab9cdf9dbaa160000be",
"status" : null
}
});
> db.users.save({
"_id" : 2,
"pic" : {
"id" : "4f1e28480eaf38193d00006e",
"status" : null
}
});
> db.users.save({
"_id" : 3,
"pic" : {
"id" : "4f1e28480eaf38193d00006e",
"status" : "Something"
}
});
> db.users.find({"pic.status":{$ne:null}}, {pic:1}).toArray()
[
{
"_id" : 3,
"pic" : {
"id" : "4f1e28480eaf38193d00006e",
"status" : "Something"
}
}
]
Chỉ tài liệu chứa "pic.status": "Cái gì đó" được trả về.
Suy nghĩ duy nhất của tôi là, bạn có chắc chắn rằng giá trị của (null) trong truy vấn giống như những gì được lưu trong tài liệu không? Các tài liệu được lưu bằng cách sử dụng trình bao JS hay chúng được lưu bằng trình điều khiển bằng một ngôn ngữ khác? Về mặt lý thuyết, null, phải là null, phải là null, bằng bất kỳ ngôn ngữ nào, nhưng tôi biết rằng các ngôn ngữ khác nhau đại diện cho "không có giá trị" khác nhau. Trong trăn, ví dụ, giá trị cho "không có giá trị" là (Không). (null) không được nhận dạng trong python.
Trong một vỏ python, tôi đã cố gắng để lưu một tài liệu với (null) là một giá trị, nhưng không nhận được một lỗi:
In [13]: coll.save({"_id":5, "pic":{"id":5, "status":null}})
---------------------------------------------------------------------------
NameError Traceback (most recent call last)
/Users/mbastien/mongodb-osx-x86_64-2.0.1/bin/<ipython-input-13-1ad232456c88> in <module>()
----> 1 coll.save({"_id":5, "pic":{"id":5, "status":null}})
NameError: name 'null' is not defined
sau đó tôi chèn (với vỏ Python) trạng thái 'null' ('null' là một chuỗi)
In [15]: coll.save({"_id":5, "pic":{"id":5, "status":'null'}})
Out[15]: 5
Không ngạc nhiên, khi tôi reran truy vấn trong vỏ JS, tài liệu này được trả lại, bởi vì 'null'! = null
> db.users.find({"pic.status":{$ne:null}}, {pic:1}).toArray()
[
{
"_id" : 3,
"pic" : {
"id" : "4f1e28480eaf38193d00006e",
"status" : "Something"
}
},
{
"_id" : 5,
"pic" : {
"status" : "null",
"id" : 5
}
}
]
Điều này có giống với những gì bạn đang gặp phải hay bạn có thể sao chép 100% này trong trình bao JS không? Hy vọng rằng, chúng tôi sẽ có thể nhận được vào thư mục gốc của vấn đề này!
Chỉ muốn nói rằng tôi đã có thể "tái tạo" điều này trong quá trình cài đặt của riêng tôi. Tôi đã sử dụng mapReduce để tạo một bộ sưu tập. Khi tôi chạy: 'db.analysis.find ({'value.ds': {$ exist: true}, 'value.ds ': {$ ne: null}}) 'Tôi được chào đón với ' {"_id": "", "giá trị": {"ds": null, "ro": null}} {"_id ":" 00003262a3a6c8b50b470f4021812aef13e079a89756dcafbc5efa1168632548 "," giá trị ": {" ds ": null," ro ": null}} {" _id ":" 0000ddd5f3845f44631651719c846c42dffe7001816c53a7aa8814b1d61c1017 "," value ": {" ds ": null," ro ": null }} ' – awshepard
Sự cố đã biến mất sau khi tôi cài đặt lại Mongo. Không chắc chắn những gì có thể đã gây ra nó. Tôi chắc chắn nó là một giá trị null đúng, nhưng cảm ơn Marc trả lời. Ví dụ đầu tiên của bạn hoạt động hoàn hảo cho tôi ngay bây giờ. –