2013-03-11 8 views
6

मैं अपने संग्रह में वस्तुओं है कि तरह लग रहे हैं:MongoDB क्वेरी सरणी को महत्व देता

{ MyArray:[null, "some value", null] } 

मैं उन वस्तुओं एक सरणी तत्व के रूप में एक शून्य मान है कि क्वेरी करना चाहते हैं। क्वेरी

db.collection.find({"MyArray":null}) 

काम नहीं करता है, ऐसा लगता है कि माईएरे के साथ केवल ऑब्जेक्ट्स शून्य हैं, उदा।

{ MyArray:null } 

मुझे अपनी क्वेरी को परिभाषित करने की आवश्यकता कैसे है?

संपादित करें: कृपया मेरी असली वस्तुओं में से एक देखें:

db.collection.find({"Attrs":null}) 

जो कोई परिणाम प्राप्त होते हैं:

{ 
     "_id" : BinData(3,"ch9PrWveqU6niB6FGVhIOg=="), 
     "PeerGroup" : "male", 
     "ProductId" : BinData(3,"weRiKOtXEUSDZHkGHLcwzw=="), 
     "CategoryIds" : [ 
       BinData(3,"BXzpwVQozECLaPkJy26t6Q=="), 
       BinData(3,"ox303ZeM50KelvoUbPBJ8Q=="), 
       BinData(3,"26ziaY+G9UKMyjmtVkkhcg=="), 
       BinData(3,"D2X8vObte0eJHNcDfp2HBw==") 
     ], 
     "ShopId" : BinData(3,"ZdfPmrlKR0GkLPC4djJuKw=="), 
     "BrandId" : BinData(3,"kCHyuyLvgECxPF1nxwr7qQ=="), 
     "Created" : ISODate("2012-08-24T07:42:12.416Z"), 
     "LastActivity" : ISODate("2013-01-14T19:38:11.776Z"), 
     "Price" : 129.9, 
     "Sale" : false, 
     "Rating" : 11.057340703605368, 
     "RatingTimed" : 0.05670431130054035, 
     "Available" : null, 
     "FreeDelivery" : null, 
     "Attrs" : [ 
       null, 
       null, 
       null, 
       null 
     ] 
} 

और फिर मैं द्वारा क्वेरी।

+0

'> db.collection.find ({" myArray ": अशक्त})' देता '{" _ id ": ObjectId (" 513da72088ba1cdba2745f1e ")," myArray ": [अशक्त," कुछ मूल्य ", अशक्त]} '। जैसा सोचा था...? –

+0

प्रश्न काम करना चाहिए। आपको वास्तविक डेटा और क्वेरी pls दिखाएं। –

+0

मेरे प्रश्न के लिए वास्तविक डेटा और क्वेरी जोड़ा गया। – Max

उत्तर

1

ठीक है, मैंने अपने सी # ड्राइवर के माध्यम से अपने "शून्य" उम्मीदवारों को लोड करके इसे समझ लिया और यह पता चला कि मान शून्य नहीं हैं, लेकिन बीसन अनिर्धारित !! वे खोल में "शून्य" के रूप में प्रदर्शित होते हैं! http://jira.mongodb.org/browse/SERVER-2426 देखें। यह काम करता है:

db.xxx.find({"Attrs":{$type:6}})

0

(वास्तव में नहीं एक जवाब है, लेकिन एक टिप्पणी में फिट नहीं करता है)

मैं समस्या को पुन: नहीं कर सकते, मैं मोंगो खोल के लिए अपने डेटा की नकल की और MongoDB संस्करणों में करने की कोशिश की 2.2.3, 2.4.1 और यहाँ 2.4.0 में:

MongoDB खोल संस्करण: 2.4.0 से कनेक्ट कर रहा: परीक्षण

> db.version() 
2.4.0 
> db.xxx.insert({ 
... "_id" : BinData(3,"ch9PrWveqU6niB6FGVhIOg=="), 
... "PeerGroup" : "male", 
... "ProductId" : BinData(3,"weRiKOtXEUSDZHkGHLcwzw=="), 
... "CategoryIds" : [ 
... BinData(3,"BXzpwVQozECLaPkJy26t6Q=="), 
... BinData(3,"ox303ZeM50KelvoUbPBJ8Q=="), 
... BinData(3,"26ziaY+G9UKMyjmtVkkhcg=="), 
... BinData(3,"D2X8vObte0eJHNcDfp2HBw==") 
... ], 
... "ShopId" : BinData(3,"ZdfPmrlKR0GkLPC4djJuKw=="), 
... "BrandId" : BinData(3,"kCHyuyLvgECxPF1nxwr7qQ=="), 
... "Created" : ISODate("2012-08-24T07:42:12.416Z"), 
... "LastActivity" : ISODate("2013-01-14T19:38:11.776Z"), 
... "Price" : 129.9, 
... "Sale" : false, 
... "Rating" : 11.057340703605368, 
... "RatingTimed" : 0.05670431130054035, 
... "Available" : null, 
... "FreeDelivery" : null, 
... "Attrs" : [ 
... null, 
... null, 
... null, 
... null 
... ] 
... } 
...) 
> db.xxx.find({"Attrs":null}).pretty() 
{ 
    "_id" : BinData(3,"ch9PrWveqU6niB6FGVhIOg=="), 
    "PeerGroup" : "male", 
    "ProductId" : BinData(3,"weRiKOtXEUSDZHkGHLcwzw=="), 
    "CategoryIds" : [ 
     BinData(3,"BXzpwVQozECLaPkJy26t6Q=="), 
     BinData(3,"ox303ZeM50KelvoUbPBJ8Q=="), 
     BinData(3,"26ziaY+G9UKMyjmtVkkhcg=="), 
     BinData(3,"D2X8vObte0eJHNcDfp2HBw==") 
    ], 
    "ShopId" : BinData(3,"ZdfPmrlKR0GkLPC4djJuKw=="), 
    "BrandId" : BinData(3,"kCHyuyLvgECxPF1nxwr7qQ=="), 
    "Created" : ISODate("2012-08-24T07:42:12.416Z"), 
    "LastActivity" : ISODate("2013-01-14T19:38:11.776Z"), 
    "Price" : 129.9, 
    "Sale" : false, 
    "Rating" : 11.057340703605368, 
    "RatingTimed" : 0.05670431130054035, 
    "Available" : null, 
    "FreeDelivery" : null, 
    "Attrs" : [ 
     null, 
     null, 
     null, 
     null 
    ] 
} 

कृपया अपना मोंगो खोल करने के लिए ऊपर अनुक्रम कॉपी और यहां परिणाम पोस्ट।

17

आदेश सरणियों के साथ दस्तावेजों को खोजने के लिए, अशक्त तत्वों के साथ कृपया चलाएँ:

db.collection.find({"keyWithArray":{$elemMatch:{"$in":[null], "$exists":true}}}) 
को safaribooksonline उचित null मिलान $in (क्योंकि आप $eq उपयोग नहीं कर सकते का उपयोग किया जाता है अनुसार

null के साथ)। इसके अलावा, null के साथ तुलना:

{"something":null} 

के साथ "कुछ" क्षेत्र सेट शून्य पर और हर दस्तावेज है जो सब पर "कुछ" फ़ील्ड नहीं है, दस्तावेजों का मिलान करेंगे। इस प्रकार हमें यह सुनिश्चित करना होगा कि कुंजी $exists का उपयोग कर मौजूद है।

+0

C'mon @Max, यह यहां स्वीकार्य उत्तर होना चाहिए। –

संबंधित मुद्दे